zoukankan      html  css  js  c++  java
  • PNG透明背景按钮的实现(MFC)

    问题描述:

    当前要在对话框上添加一个以两个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的初始化代码

    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()函数中添加代码:

    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透明按钮效果

  • 相关阅读:
    20189315《网络攻防实践》第十周作业
    20189315《网络攻防实践》第九周作业
    20189315《网络攻防实践》第八周作业
    20189315《网络攻防实践》第七周作业
    20189315《网络攻防实践》第六周作业
    20189315《网络攻防实践》第五周作业
    20189315《网络攻防实践》第四周作业
    20189315《网络攻防实践》第三周作业
    20189315《网络攻防实践》第二周作业
    20189315《网络攻防实践》第一周作业
  • 原文地址:https://www.cnblogs.com/jinsedemaitian/p/5589185.html
Copyright © 2011-2022 走看看