1. 程式人生 > >PNG透明背景按鈕的實現(MFC)

PNG透明背景按鈕的實現(MFC)

問題描述:

當前要在對話方塊上新增一個以兩個PNG圖片作為背景的按鈕,PNG圖的背景是透明的,按鈕也要做出相同的透明效果。並且滑鼠不在按鈕上時,按鈕顯示"bg1.png";滑鼠移動到按鈕上時,按鈕顯示"bg2.png"

開發環境為VS2010。

解決辦法:

使用GDI+庫裝載PNG圖片,並使用MFC Button Control和CMFCButton類結合,呼叫CMFCButton::SetImage完成按鈕背景圖片設定。

@1.引入GDI+庫

@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.     CMFCButton *pMfcButton = (CMFCButton *)GetDlgItem(IDC_BTN_PNGBUTTON);  
  6.     HBITMAP hBmp, hBmpHot;  
  7.     m_Bg1.GetHBITMAP(NULL, &hBmp);  
  8.     m_Bg2.GetHBITMAP(NULL, &hBmpHot);  
  9.     pMfcButton->SetImage(hBmp, TRUE, hBmpHot);  
  10.     pMfcButton->m_bTransparent = TRUE;    // 設定按鈕為透明的

編譯程式即可檢視到已經實現了PNG透明按鈕效果

相關推薦

PNG透明背景按鈕實現MFC

問題描述: 當前要在對話方塊上新增一個以兩個PNG圖片作為背景的按鈕,PNG圖的背景是透明的,按鈕也要做出相同的透明效果。並且滑鼠不在按鈕上時,按鈕顯示"bg1.png";滑鼠移動到按鈕上時,按鈕顯示"bg2.png" 開發環境為VS2010。 解決辦法: 使用G

Android中對話方塊右上角關閉懸浮按鈕實現總結

其實很簡單,步驟如下: 1、需要把對話方塊的預設背景改為透明。 方法:自定義Dialog的樣式。 <!--對話方塊透明背景--> <style name="Translucent_NoTitle" parent="android:style/Theme

古典密碼(凱撒密碼/維吉尼亞密碼/Play fair密碼/Hill密碼實現MFC介面

void CEn_DeDlg::random_Matrix() { int i, j; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { K[i][j]

flutter實現OutlineButton線框按鈕

在flutter的控制元件裡 常用按鈕有:FlatButton,RaisedButton,FloatingActionButton,OutlineButton。FlatButton是扁平的,沒有陰影的。RaisedButton是有陰影,看起來凸起來的,很有點選慾望的那種,如圖

[MFC] 無邊框視窗的Resize拖動效果的實現:子視窗覆蓋,導致主視窗熱點區無法響應WM_NCHITTEST

這篇博文講解了如何實現無邊框視窗的Resize拖動效果,文中提到,需要響應主視窗的WM_NCHITTEST訊息,檢測滑鼠是否在resize熱點區並返回HTTOPLEFT、HTBOTTOM等相應的結果。

前端開發實現 按鈕選中後顏色變化

今天我要實現的按鈕的動態選中,就是說在一排按鈕中選中某個按鈕,這個按鈕就會變色,其他按鈕恢復原來顏色,目的是為了讓人知道自己選中了哪個按鈕,知道自己做了什麼。 功能其實不是很難,只需要使用jQuery的功能就能實現: 分析一下思路,使用this進行判斷當前是哪個按鈕被選中

minigui/mgncs:自定義渲染器(renderer)實現透明背景按鈕(transparent button)

一般來說,對於mStatic,mImage這樣的控制元件,只要設定了透明屬性(transparent=true),就可以實現背景透明,但對於mButton按鈕卻不行,即使設定了透明屬性,也不能實現透明背景。 miniStudio中對按鈕設定透明屬性示例:

Android 音樂播放器的實現自定義按鈕實現

Android 系統提供了MediaPlayer控制元件,讓我們能夠利用它實現音訊的播放。 而從學Android開始,在看教程的時候,我就想,我要自己做一個音樂播放器,因為一個完整的音樂播放器是有很多功能的,它涉及到很多方面的知識,可以幫助我們更好地學習和掌握關於Andro

多線程——通過Callable實現30

class itl span sta cnblogs over 主體 run 另一個 視頻:https://edu.aliyun.com/course/36/learn?spm=5176.8764728.0.0.fVZ5cb#lesson/433 1.從JDK1.5開始,追

ProtoBuf.js – Protocol Buffers的Javascript實現

line 解決 進行 序列 blank read tar com json 原文鏈接:ProtoBuf.js – Protocol Buffers的Javascript實現 推薦前端網址:http://keenwon.com/ 在Javascript裏比較常見的數據格式就是

異步線程池的實現-------具體實現方法

fun format 測試 路徑 線程池。 用戶體驗 deb tar clas 本篇是這個內容的第一篇,主要是寫:遇到的問題,和自己摸索實現的方法。後面還會有一篇是總結性地寫線程池的相關內容(偏理論的)。 一、背景介紹 朋友的項目開發到一定程度之後,又遇到

模型類的設計與實現

介紹 傳遞數據 規則 添加 play using ota 實體類 重要 實體類是現實實體在計算機中的表示。它貫穿於整個架構,負擔著在各層次及模塊間傳遞數據的職責。 一般來說,實體類可以分為“貧血實體類”和“充血實體類”,前者僅僅保存實體的屬性,而後者還包含一些實體間的關系與

n個整數全排列的遞歸實現C++

code clas 全排列 pop data turn ack popu perm 全排列是很經常使用的一個小算法,以下是n個整數全排列的遞歸實現,使用的是C++ #include <iostream> using namespace std; in

Python學習 八大排序算法的實現

ram tty adjust 二叉樹 turn bre python 使用 元素 本文Python實現了插入排序、基數排序、希爾排序、冒泡排序、高速排序、直接選擇排序、堆排序、歸並排序的後面四種。 上篇:Python學習(三) 八大排序算法的實現(上)

第34課 棧的概念及實現

操作符 cap ons 順序存儲 異常安全 city const text cte 1. 棧的概念 (1)棧是一種特殊的線性表 (2)棧僅能在線性表的一端進行操作   ①棧頂(Top):允許操作的一端   ②棧底(Bottom):不允許操作的一端 (3)棧的特性——後進先出

多種排序算法的思路和簡單代碼的實現

insert i++ 前後端 分享 size quicksort 執行 判斷 clas 就自己簡單的理解了一些排序算法(JAVA)思路和代碼分享給大家:歡迎大家進行交流。 直接插入排序,折半插入排序,冒泡排序,快速排序 1 public class Sort { 2

八大排序算法python實現

n) 順序 tails detail 時間 tail 哨兵 插入元素 lang 一、概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。

深度學習實踐系列之--身份證上漢字及數字識別系統的實現

手動 ear 常用 env 窗口 mic 文件下載 oot edr 前言: 本文章將記錄我利用深度學習方法實現身份證圖像的信息識別系統的實現過程,及學習到的心得與體會。本次實踐是我投身AI的初次系統化的付諸實踐,意義重大,讓自己成長許多。終於有空閑的時間,將其

Dji Mobile SDK 基礎實現

stat one 透傳 pub != exceptio rom tick ann Dji Mobile SDK 基礎實現(二) 本文簡要介紹如何通過調用DJI Mobile SDK,實現獲取和釋放無人機的控制權限、模擬遙控器按鈕控制無人機的飛行、獲取無人機的回傳視頻、獲取

Dji Mobile SDK 基礎實現

n-1 app lba ger print ttl touch事件 釋放 bsp Dji Mobile SDK 基礎實現(一) 本文簡要介紹如何通過調用DJI Mobile SDK,實現獲取和釋放無人機的控制權限、模擬遙控器按鈕控制無人機的飛行、獲取無人機的回傳視頻、獲取無