MFC对Button控件的重绘方法(多种)

 2024-02-15 03:05:57  阅读 0

自绘按钮

1、位图按钮的实现方法:首先我们创建一个基于对话框的应用程序和MFC类,这也是最简单、功能最强大的位图按钮。

采取以下步骤: 1、为按钮指定一个唯一的按钮标题(本例为确定按钮,这里将按钮标题设置为确定)并选择属性,然后向项目中添加一些位图资源,并为这些资源添加标签名称而不是数字 ID。 它们的ID分别是“OKU”、“OKD”、“OKF”、“OKX”(必须用双引号括起来),分别对应按钮的“释放(向上)”、“按下(向下)”、“获取”输入focus()”和“()”状态。 2. 我们还需要在对话框类中添加;数据成员。 3. 初始化时调用该成员: .... (IDOK, this);...Click编译按钮,成功后运行程序,哈哈,看看效果,我们的位图按钮就创建好了 /*如果以上方法不行,请检查你的资源,资源名称如“OKU”、“OKD”需要用引号括起来,如果失败,很可能就是这个原因 */ 要改变按钮的标题,可以将其标题设置为ICON或者:(这里演示了用法,Icon按钮读者可以按照代码以下)

B. 使用图标创建按钮 1. 打开ICON 按钮的属性页,在样式中选择图标。 2、在对话框类的头文件中定义成员变量(用于添加此成员变量)m_; //对应图标按钮 3.创建对应的图标或位图资源:图标资源:。 在初始化中添加如下代码:...//对应图标按钮HICON hIcon=()->(IDI_ );.(hIcon);... 重新编译运行程序,就会出现美妙的图像按钮在你面前。 C. 使用位图创建按钮 1. 打开按钮的属性页并选择样式。 2、在对话框类的头文件中定义成员变量(使用时添加此成员变量); 3. 创建位图资源:位图资源:。 在初始化中添加如下代码: //对应位图按钮... hBmp=::((),(IDB_ ));.(hBmp);

二,

A. 只加载一张位图的方法:

1.加载bmp资源,id为,属性设置为true,icon属性设置为false。

2、

*pBtn = ( *)(); ; hBit ;if(.()){hBit = ().();pBtn->(hBit);}

缺点:图片不会自动拉伸。

B.为按钮的不同状态加载不同的位图:(使用类)这个方法还可以。 1.选择按钮属性Owner Draw和按钮ID:

添加变量2,然后手动修改为; 3、在初始化。 (,); //:通常;:按 。 (, 这);。 ();

或者另一种方式,不添加关联变量。直接声明;,在初始化中调用

.(,this);//将按钮与变量关联起来

.(,);

.();

缺点:1、无法显示文字,需要重载函数。

2、图片背景色无法去掉,即只能显示矩形按钮。

// 注意:是来自 . 这

// 如下:

// 类继承

// ;

// .(_T("我的"),

// |||,

// CRect(10,10,100,30), , 1);

//

// 这是一个 -

// 使用红色绘制 的文本的类。

//示例实现了以特定RGB颜色绘制文本的方法

空白 ::( )

UINT = ;

// 此代码仅适用于 .

(->==);

// 如果 ,将样式添加到 .

如果 (-> & )

|= ;

// 绘制框架。

::(->hDC, &->,

, );

控件重绘_c#让控件重绘_c 中button控件重绘

// 获取 的文本。

;

();

// 使用文本颜色红色绘制文本。

= ::(->hDC, RGB(255,0,0));

::(->hDC, , .(),

&->, ||);

::(->hDC, );

//继承的例子

void ::( ){// TODO: 添加代码来绘制项目 //从 CRect 中获取控件的相关信息 rect=-> ;CDC *pDC=CDC::(-> hDC);int =pDC-> ( );UINT 状态 = -> ;TCHAR [ + 1];::(, , );::();CRect 矩形 1=矩形;矩形。 (rect1.left,,rect1.left+75,+24);//显示按钮的文字 pDC->();if (!=NULL){CFont* hFont = (); CFont* = pDC-> (hFont); CSize = pDC-> (, ()); pt(直角。

()。 X-。 cx/2,直角。 ()。 y-。 cy / 2);如果 (状态 & )pt。 (1, 1);int nMode = pDC-> ();if (状态 & )pDC-> (pt, , , , TRUE, 0, ()NULL);-> (pt, , , , TRUE, 0, ()NULL);pDC->();pDC->(nMode);}pDC->();}

C、继承类,重写函数,绘制不同状态的位图(,,,,)。

D、可以使用控件,非常好用,比MFC的控件好用。 假设按钮 ID 为。 添加成员变量m_btn; 2.添加位图资源,设置ID为。 初始化按钮 m_btn.(,this);m_btn.(,RGB(0,0,0));m_btn.( ::, 30); 注意:以上函数会将图像中颜色值为 RGB(0,0,0) 的点设置为透明。

E、将按钮属性设置为低绘制,然后映射消息。 函数内自己画就行了 void ::(int, ){if( == ){//画按钮框 UINT = ;//按下了吗? if (-> & ) |= ;CDC dc;dc.(->hDC);dc.(&->, , );//输出文本 dc.(&);dc.(RGB(0, 0, 255) ));dc.(); sText;.(sText);dc.(->.left + 20, -> + 20, sText);//是否获得焦点 if(-> & ){//绘制虚拟框 CRect = ->;. (3, 3);dc.(&);};}::(, );}

标签: 位图 按钮 初始化

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码