class CIEButton: public CButton
void CIEButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your code to draw the specified item
CDC ButtonDC;
CBitmap bitmapTrans;
BITMAP bmp;
CDC mem;
CRect rc,rc2;
//得到用于绘制按钮的DC
ButtonDC.Attach( lpDrawItemStruct->hDC );
//准备用于向按钮区域传输位图
mem.CreateCompatibleDC(&ButtonDC);
//获取按钮所占的矩形大小
rc=lpDrawItemStruct->rcItem;
rc2=rc;
//在任何状态下,图片是首先要绘绘制的
bitmapTrans.LoadBitmap(IDB_IE);
bitmapTrans.GetBitmap(&bmp);
CBitmap *old=mem.SelectObject(&bitmapTrans);
int x,y;
x=rc.Width()/2-bmp.bmWidth/2;
y=rc.Height()/2-bmp.bmHeight/2;
//向按钮中心点传输位图
ButtonDC.BitBlt(x,y,rc.right,rc.bottom,&mem, 0, 0, SRCCOPY);
mem.SelectObject(old);
//获取按钮目前所处的状态,根据不同的状态绘制不同的按钮
//如果鼠标移入按钮,绘制浮起状态
if (IsMouseOn )
{
//为按钮绘制立体效果
rc.top=rc.top+1;rc.bottom=rc.bottom-1;
rc.left=rc.left+1;rc.right=rc.right-1;
//绘制立体边框
ButtonDC.Draw3dRect(&rc,RGB(255,255,255),RGB(0,0,0));
}
//如果按钮被按下,绘制下沉立体效果
if(lpDrawItemStruct->itemAction &ODA_SELECT)
{
rc2.top=rc2.top+1;rc2.bottom=rc2.bottom-1;
rc2.left=rc2.left+1;rc2.right=rc2.right-1;
//绘制立体边框
ButtonDC.Draw3dRect(&rc2,RGB(0,0,0),RGB(255,255,255));
}
}
分享到:
相关推荐
自绘按钮是指不依赖系统默认的图形资源,而是通过程序员自行编写代码绘制的按钮控件。这允许我们定制按钮的样式,包括背景图像、边框、文字颜色等,以满足特定的设计需求或品牌风格。 三、自绘位图按钮步骤 1. 创建...
本主题聚焦于如何利用MFC实现自绘按钮,特别是涉及BMP位图的使用。自绘按钮允许开发者自定义按钮的外观,提升应用程序的界面美观度和用户体验。 首先,我们需要理解自绘按钮的概念。在标准的Windows控件中,按钮的...
在Windows编程中,自绘位图按钮是一种高级技术,它允许开发者通过自定义按钮的外观来实现更加丰富和个性化的用户界面。这个程序的核心在于利用GDI(Graphics Device Interface)库来绘制位图按钮,使其在不同状态下...
3. **重写绘图方法**:为了自绘按钮,我们需要覆盖`CButton`的虚函数`OnPaint`。在这个函数里,我们将使用GDI(Graphics Device Interface)函数绘制位图。同时,我们还需要处理按钮的不同状态,如焦点、按下或悬停...
总结来说,通过以上步骤,我们可以使用MFC实现一个自绘按钮,添加背景图片,提升用户界面的视觉效果。注意,自绘按钮需要一定的GDI知识,以及对MFC消息机制的理解。实践中,可以结合现代UI框架,如WPF或Qt,它们提供...
6. **响应鼠标事件**:自绘按钮还需要处理鼠标消息,如WM_LBUTTONDOWN、WM_LBUTTONUP等,以实现点击效果,如改变按钮的高亮状态。 总的来说,创建VC++自绘位图按钮涉及对Windows消息机制、GDI绘图技术以及资源管理...
通过设置`WS_EX_TRANSPARENT`或`BS_BITMAP`样式,我们可以使按钮背景透明并添加位图。 - 对于添加文字,我们可以使用`BS_ICON`和`BS_TEXT`样式结合,或者创建一个包含位图和文本的单一资源。 2. **加载位图** - ...
自绘按钮控件是Windows应用程序开发中的一个重要概念,它允许开发者根据自己的需求定制按钮的外观和行为,以实现独特的设计风格或功能增强。在Windows API、MFC、Qt、WinForms、WPF等不同的开发框架中,都有相应的...
重绘按钮通常涉及到OnPaint消息的处理。在重绘过程中,程序可能使用CDC对象来绘制按钮的新状态,包括更新位图和文本。在MFC中,可以通过覆盖CWnd或CDialog的`OnPaint`函数来实现自定义的绘制逻辑。 最后,由于案例...
标题中的“标题栏上添加按钮,自绘按钮”是指在应用程序窗口的标题栏部分增加一个或多个自定义的按钮,这种技术通常用于扩展窗口的功能,比如提供额外的快捷操作或者菜单。自绘按钮意味着开发者需要自己实现按钮的...
在自绘按钮程序中,开发者可以指定一个位图文件作为按钮的背景,使得按钮不再局限于系统默认的样式,而是可以根据设计需求定制个性化的外观。 VC++是一个强大的C++集成开发环境,提供了丰富的MFC(Microsoft ...
5. **重绘按钮**:在窗口的消息处理中,需要处理`WM_PAINT`消息,以绘制按钮。使用GDI+的`Graphics`类,我们可以绘制位图,并根据定义的透明色处理透明效果。此外,还可以添加阴影、边框等视觉效果,以提升按钮的...
在自绘按钮模块中,开发者会使用GDI函数来绘制PNG图像,同时处理按钮的各种状态,如鼠标悬停、按下和释放等,以改变按钮的外观。 这个开源项目包含多个文件,其中: 1. SkinTest.res:这是资源文件,可能包含了...
3. **加载位图资源**:在类的初始化函数(如OnCreate)中,使用LoadBitmap函数加载资源文件中的位图,将其赋值给CBitmap对象。 4. **重写消息映射函数**:添加对ON_WM_MOUSEENTER和ON_WM_MOUSELEAVE消息的处理。在...
- **自绘按钮**:默认的按钮控件只有基本样式,要实现位图按钮,需重载WM_PAINT消息处理函数,进行自定义绘制。 3. **位图按钮实现** - **位图资源加载**:使用`LoadBitmap`函数从资源中加载位图,得到`HBITMAP`...
MFC自绘按钮是指开发者通过自定义绘图方式来创建具有独特视觉效果的按钮,而非仅仅依赖操作系统提供的默认样式。这种技术可以让按钮的外观更加丰富多彩,以满足用户界面的个性化需求。 在MFC中,按钮类通常是...
5. **设置按钮位图**:获取按钮控件的句柄,然后使用`SetBitmap`或`SetButtonInfo`函数将位图设置为按钮的背景。例如,如果使用MFC,你可以这样做: ```cpp CButton btn; btn.GetButtonCtrl().SetBitmap(hBitmap,...
4. **使用说明**(可能在“详情.txt”中):这份文档将指导开发者如何在自己的项目中使用这个DLL,包括如何添加引用,如何调用函数创建自绘按钮,以及如何处理可能的错误和异常。 为了在Win64系统上使用这个库,...
在Windows编程中,自绘按钮(自定义控件)是一种常见的技术,允许开发者根据自己的需求定制按钮的外观和行为,超越系统默认样式。本主题主要围绕如何实现一个自绘按钮,展示三种不同的按钮状态,并调整边框颜色,使...