PNG透明背景按钮的实现(MFC)

学技术怎么能不会用服务器,阿里云服务器现8折优惠,还有更多优惠券限量发放
https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=7czske1k&utm_source=7czske1k

问题描述:

当前要在对话框上添加一个以两个PNG图片作为背景的按钮,PNG图的背景是透明的,按钮也要做出相同的透明效果。并且鼠标不在按钮上时,按钮显示"bg1.png";鼠标移动到按钮上时,按钮显示"bg2.png"

开发环境为VS2010。

解决办法:

使用GDI+库装载PNG图片,并使用MFC Button Control和CMFCButton类结合,调用CMFCButton::SetImage完成按钮背景图片设置。


@1.引入GDI+库

由于是按钮上使用的是PNG图,第一步是将PNG图装载进来,这一步建议使用GDI+库,关于GDI+库的引入,请参看http://blog.csdn.net/cashey1991/article/details/7407425,其中有详尽描述)

@2.对话框中添加Bitmap成员变量作为按钮背景图的图片对象,假设变量名为m_Bg1, m_Bg2

@4.在构造函数中添加m_Bg1, m_Bg2的初始化代码

[cpp]  view plain copy
  1. CMainDlg::CMainDlg(CWnd* pParent /*=NULL*/)  
  2.     : CDialogEx(CMainDlg::IDD, pParent),  
  3.     m_Bg1(L"bg1.png"), mBg2(L"bg2.png")  
  4. {  
  5.     ....  
  6. }  

@3.在工具箱中选择MFC Button Control,在对话框中进行添加,假设ID号为IDC_BTN_PNGBUTTON

@4.设置添加的MFC Button Control的Style为无边框,Visible为True,Transparent为True,Image Type为无

@5.在对话框的OnInitDialog()函数中添加代码:

[cpp]  view plain copy
  1. BOOL CMainDlg::OnInitDialog()  
  2. {  
  3.     CDialogEx::OnInitDialog();  
  4.     ....  
  5.   
  6.     CMFCButton *pMfcButton = (CMFCButton *)GetDlgItem(IDC_BTN_PNGBUTTON);  
  7.   
  8.     HBITMAP hBmp, hBmpHot;  
  9.     m_Bg1.GetHBITMAP(NULL, &hBmp);  
  10.     m_Bg2.GetHBITMAP(NULL, &hBmpHot);  
  11.     pMfcButton->SetImage(hBmp, TRUE, hBmpHot);  
  12.     pMfcButton->m_bTransparent = TRUE;    // 设置按钮为透明的  

编译程序即可查看到已经实现了PNG透明按钮效果

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值