mfc按钮控件加载bitmap并显示字

mfc按钮控件加载bitmap并显示字,第1张

1、在资源编辑的时候选中按钮的 Owner draw 属性,不需要选择 Bitmap 属性.

按钮右键-->Styles-->Owner draw

2、在程序中定义一个CBitmapButton成员变量。

注意:不能使用ClassWizard为按钮映射一个CButton变量,然后改为CBitmapButton,

这么做并不能将按钮直接映射为CBitmapButton类的对象,反而会出现初始化错误

3、使用CBitmapButton::LoadBitmaps装载各种状态的图片,

使用CBitmapButton::SubclassDlgItem关联到想要的按钮,

使用CBitmapButton::SizeToContent函数使按钮适合图片大小。

注意Loadbitmaps一定要在关联到按钮之前进行!

附:添加资源Bitmap的方法:Insert菜单-->Resource -->Resource type:Bitmap-->Import,

之后选择所需的图片就可以了

实例化:选中按钮的owner Draw属性,在资源中加载两副*.bmp格式的位图

首先你的CBitmap控件要有BS_BITMAP样式

((CButton*)GetDlgItem(IDC_BUTTON_TEST))->ModifyStyle(0, BS_BITMAP)

其次,你的m_bmp不能随意销毁,默认情况下CBitmap的父类CGdiObj析构的时候会删除它所持有的HGDIOBJ对象。用Detach将GDI对象和CGdiObj对象分离

HBITMAP hBitmap = (HBITMAP)m_bmp.Detach()

合起来就是

CBitmap m_bmp

m_bmp.LoadBitmap(IDB_BITMAP1)

HBITMAP hBitmap = (HBITMAP)m_bmp.Detach()

((CButton*)GetDlgItem(IDC_BUTTON_TEST))->ModifyStyle(0, BS_BITMAP)

((CButton*)GetDlgItem(IDC_BUTTON_TEST))->SetBitmap(hBitmap)

注意:这样的话你的这个hBitmap对象如果没有注意自己释放,就发生内存泄漏了。如果这个图片在整个程序中都要用到,那么这样写没问题,只要你不要每次要用到的时候都来一次LoadBitmap就好。每次都来LoadBitmap会不会发生泄漏、泄漏会有多严重,我就不知道了。目测会泄漏而且挺严重

1.事先准备好位图。一定要位图。位图。

2.在对话框中添加picture控件,设置type为bitmap,将其ID改为IDC_STATIC1(不改不行)。然后为picture添加控制变量PT1。

3.在.cpp中找到onpaint()函数加入如下代码。

CDC dcMemory1

CBitmap wtj_bitmap1

BITMAP bmInfo1

CDC *pDC=PT1.GetDC()

PT2.SetWindowPos(0,-400,112,53,20, SWP_NOZORDER | SWP_NOACTIVATE)

GetDlgItem(IDC_STATIC1)->GetWindowRect(rect)//创建一个CRect对象rect,矩形结构类,此对象用来指定要拉伸变为的大小

wtj_bitmap1.LoadBitmap(IDB_BITMAP15)

wtj_bitmap1.GetObject(sizeof(bmInfo1),&bmInfo1)

dcMemory1.CreateCompatibleDC(pDC)

dcMemory1.SelectObject(&wtj_bitmap1)

//pDC->SetStretchBltMode(COLORONCOLOR)

pDC->SetStretchBltMode(HALFTONE)

pDC->StretchBlt(0,0,1000,rect.Height()-13,&dcMemory1,0,0,bmInfo1.bmWidth,bmInfo1.bmHeight, SRCCOPY)//利用StretchBlt()贴图实现自动拉伸

ReleaseDC(pDC)

4.setwindowspos函数和stretchblt函数参数百度就可以查到了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11864109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存