MFC 為按鈕載入點陣圖 CBitmapButton
系統環境:Windows 7
軟體環境:Visual C++ 2008 SP1
本次目的:使用點陣圖按鈕,並且設定按鈕的滑鼠懸停效果
在用MFC開發時,介面是比較不好開發的一塊。VC中自帶了CBitmapButton類,但是用途不多,網上很多Button類的派生類蠻實用的,但是若是簡單的點陣圖按鈕用自帶的CBitmapButton就可以實現了,以下是效果圖:
步驟一:新建基於對話方塊工程,放置一個按鈕,可以適當調整大小,設定其Owner Draw屬性為TRUE,右鍵為按鈕新增變數,改變其變數型別為CBitmapButton,按確定完成;
步驟二:匯入按鈕點陣圖,這裡四幅圖大小要一致,以下是四種狀體的按鈕,若讀者要實驗這次的設計的話,可以右鍵另存為,然後用“畫圖”把png格式的另存為bmp格式的。在資源檢視,右鍵“新增資源”,“匯入”以下圖片:
步驟三:初始化工作,在對話方塊的OnInitDialog()函式裡面新增以下程式碼:
- m_btButton.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2,IDB_BITMAP3,IDB_BITMAP4); //載入
- m_btButton.SizeToContent(); //使按鈕適應圖片大小
步驟四:為控制點陣圖按鈕的可用、不可用新增程式碼,這是為了驗證第四種狀態的按鈕:
- void CTestDlg::OnBnClickedButton2()
- {
- m_btButton.EnableWindow(0);
- }
-
void
- {
- m_btButton.EnableWindow();
- }
步驟五:到這裡已經完成了點陣圖按鈕的實現,編譯執行可以看到結果。但是滑鼠滑過的時候,按鈕並不會感應到焦點的存在。這裡用定時器捕獲焦點在按鈕上,並且改變此時的按鈕狀體為第三種圖片。首先為窗體新增OnTimer()事件,在OnTimer()函式裡面填寫如下程式碼:
- void CTestDlg::OnTimer(UINT_PTR nIDEvent)
- {
- // TODO: 在此新增訊息處理程式程式碼和/或呼叫預設值
-
if
- {
- POINT p;
- GetCursorPos(&p);
- CWnd *hwnd;
- hwnd=WindowFromPoint(p); //檢索視窗中包含指定的點;點必須指定螢幕座標在螢幕上的一個點。
- CWnd *hwnd2=GetDlgItem(IDC_BUTTON1);
- if (hwnd2 == hwnd) //如果滑鼠在按鈕上
- {
- if (GetFocus()!=hwnd2) //如果按鈕無焦點,那麼設定焦點
- hwnd2->SetFocus() ;
- }
- else//如果滑鼠不在按鈕上;
- {
- if (GetFocus() == hwnd2 ) //如果按鈕有焦點,那麼去焦點;
- GetDlgItem(IDC_BUTTON2)->SetFocus(); //這裡的IDC_BUTTON2為你想跳轉到的控制元件ID號
- }
- }
- CDialog::OnTimer(nIDEvent);
- }
最後在對話方塊的OnInitDialog()函式裡面新增開啟定時器,時間間隔200ms足夠了。
- SetTimer(1,200,NULL);
完成後,執行就可實現與文章開頭所示的圖片一樣的效果
利用CBitmapButton類實現點陣圖按鈕的兩種方法:
方法一:
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格式的點陣圖,
然後在對話方塊類中加入:
2//定義變數,必須放在函式外面才能正常實現 3 4BOOL CXXXXXXX::OnInitDialog()
5{
6CDialog::OnInitDialog();
7
8m_btnX1.LoadBitmaps(IDB_XXXX_UP,IDB_XXXX_DOWN);
9//這裡是兩副點陣圖,滑鼠按下和彈起,
10// 也可以只加一個ID資源;11m_btnX1.SubclassDlgItem(IDC_DASEN_X1,this);
12m_btnX1.SizeToContent();
13}14
15文章引用自:http://blog.sina.com.cn/s/blog_44e571d70100080o.html
16
方法二:使用CBitmapButton::AutoLoad函式關聯到想要的按鈕
需要注意:
A、使用CBitmapButton::AutoLoad函式之前不能使用CBitmapButton::LoadBitmaps裝載
各種狀態的圖片,否則會出錯。
B、AutoLoad函式完成關聯和改變按鈕大小的功能。類似於上面CBitmapButton::SubclassDlgItem
和CBitmapButton::SizeToContent函式的功能。
C、CBitmapButton::AutoLoad使用的點陣圖是預設資源ID的,即它會自動裝載相關資源點陣圖。
點陣圖的資源ID格式為:
"按鈕Caption+U"、"按鈕Caption+D"、"按鈕Caption+F"、"按鈕Caption+X",
分別代表Up、Down、Focus、Disable狀態。
如資源編輯時,希望關聯的按鈕的Caption為Test,
那麼其預設裝載的點陣圖資源的ID為:"TestU"/"TestD"/"TestF"/"TestX",
注意分號""也是其ID的一部分。
方法二例子:
首先,選中Caption為:"myBitmapButton"按鈕的owner Draw屬性
其次,新增兩個點陣圖資源,並修改其ID分別為:"myBitmapButtonU"和"myBitmapButtonD",這裡只新增兩個點陣圖
然後在對話方塊類中加入:
1 CBitmapButton m_btnX1;//必須放在函式外面才能正常實現2 BOOL CXXXXXXX::OnInitDialog()
3 {
4 CDialog::OnInitDialog();
5 6 m_btnX1.AutoLoad(IDC_BUTTON1,this);//ID為IDC_BUTTON1的按鈕的Caption為:myBitmapButton7 }
至此兩種方法就都結束了。
相關推薦
MFC 為按鈕載入點陣圖 CBitmapButton
系統環境:Windows 7 軟體環境:Visual C++ 2008 SP1 本次目的:使用點陣圖按鈕,並且設定按鈕的滑鼠懸停效果 在用MFC開發時,介面是比較不好開發的一塊。VC中自帶了CBitmapButton類,但是用途不多,網上很多Button類的
按鈕載入點陣圖的幾個方法 vc
一,只加載一張點陣圖的方法: 1, 裝入bmp資源,id為IDB_BMP,按鈕的bitmap屬性設為true,icon屬性為false。 2, CButton *pBtn = (CButton *)GetDlgItem(IDB_BMP); CBitmap bitMap; H
MFC內建的點陣圖按鈕CBitmapButton
使用VC++6中的CBitmapButton類,可以做出效果非常好的圖形按鈕來。 使用方法也非常簡單: 1.在對話方塊上拖放一個普通的按鈕控制元件; 2.宣告一個CBitmapButton類的例項;不要使用ClassWizard對映; //也就是在類嚮導不能新增變數 3.呼叫CBitmapButton
MFC中當儲存點陣圖時,圖片為全黑的解決辦法
需要建立相容點陣圖,建立相容DC,然後需要將點陣圖選入DC中,再將螢幕DC的影象拷貝到建立的相容記憶體DC中。 ······ CRect rect1; GetClientRect(&rect1);
windows程式設計 載入點陣圖圖片
現在網上隨便下個jpg圖片,用windows自帶的畫圖工具開啟,點選畫圖工具左上角,檔案->另存為->選擇bmp,點選儲存,儲存好後,就得到一張點陣圖了。 得到的點陣圖,點陣圖的記憶體比原圖片jp
6.VC(ui)-MFC下實現透明點陣圖
我們在進行程式的介面設計時,常常希望將點陣圖的前景顯示在介面上,而將點陣圖的背景隱藏起來,將點陣圖與介面很自然的融合在一起,本文介紹了透明點陣圖的製作知識,並將透明點陣圖在一個對話方塊中顯示了出來。 直接上圖:原圖:Demo效果圖: 步驟如下: 1、設定待顯示點陣圖的
WPF 設定按鈕Button的背景圖(Content或Background下的兩種方法設定Button的向量圖背景,為按鈕新增向量圖背景)
用Blend畫好的向量圖: 新增到Button中去。 方法一:(Backgroud,缺點是有條紋) <Button Canvas.Top="48" Canvas.Left="62" Width="527" Height="691" Border
mfc編輯框輸入垂直居中&字型調整&不採用password屬性進行密碼輸入&vs2013中載入bitmap點陣圖
第一部分:mfc編輯框輸入垂直居中 處理前:編輯框游標靠上,不太美觀 處理後:游標垂直居中 操作: 1)將編輯框屬性中的Align Text 選擇為Center 2)將編輯框屬性中的Multil
VC 點陣圖按鈕CBitmapButton的使用
系統環境:Windows 7 軟體環境:Visual C++ 2008 SP1 本次目的:使用點陣圖按鈕,並且設定按鈕的滑鼠懸停效果 在用MFC開發時,介面是比較不好開發的一塊。VC中自帶了CBitmapButton類,但是用途不多,網上很多Button類的
MFC的對話方塊中建立點陣圖按鈕
1.可新建一個類ImageButton(繼承自CButton),並設定其風格為自繪: ModifyStyle(0,BS_OWNERDRAW);ImageButton.h:class ImageButton : public CButton{private: public: I
MFC中點陣圖按鈕
2. 在對話方塊.h檔案內定義點陣圖按鈕物件 CBitmapButton mybutton; 3. 在對話方塊.c檔案內建立 BOOL Dialog::OnInitDialog() {} 如果已有就不必建立; 4.一種方法: mybutton.L
MFC點陣圖按鈕
語言: VC++, IDE: VS2017 1.拖拽一個按鈕,預設ID“IDC_BUTTON1”,將其屬性中的Bitmap修改為“True”,假設點陣圖資源的ID為“IDB_BT_BITMAP”, 2.在程式碼中載入點陣圖,並設定為按鈕點陣圖(通常作為初始化,可
VS的mfc中將點陣圖覆蓋到button按鈕上
1.在資源編輯器中新增一個button按鈕,把它的Bitmap屬性設為true; 2.在按鈕上點右鍵,新增變數,變數名為m_Btn(CButton型別的) 3.將圖片匯入到資源管理器中(資源檢視下右擊xx.rc,新增資源),ID為IDB_BITMAP1(其他也行,不過在程式
WPF繪圖的工程應用:為按鈕或自定義按鈕新增向量圖作為背景,該向量圖來自Blend或Design設計的Path資料。
例1 :Button+Drawing繫結+GeometryDrawing 功能描述:為Button新增簡單的向量圖作為背景。 <Window x:Class="Drawing.Drawings" xmlns="http://schemas.microsoft
1.2為多變數資料繪製散點陣圖
1 # 繪出6個圖形,包括了以下幾個列:花萼長度、花萼寬度、花瓣長度和花瓣寬度 2 plt.close('all') # 關掉其他的影象 3 plt.figure(1) 4 5 # 繪製一個3行2列的圖 6 subplot_start = 321 7 col_numbers = r
MFC擷取對話方塊指定位置的點陣圖
//儲存點陣圖 CDC *pDC = getDC(); CDC memDC; // 建立並繫結繪畫DC和Bitmap CBitmap bitmap; memDC.CreateCompatible
onCreateView中載入大點陣圖
我的一個Fragment中,載入了一個1024*1024的圖片,非常卡。解決辦法 1. 將圖片改為512*512 2. 非同步載入。 final SmartImageView mizige = (SmartImageView)view.findViewById(R.id.mizige);
Inkscape將點陣圖轉換為向量圖
Inkscape是一款相當強大的向量圖工具,目前最新的版本是0.92 for Linux(windows版本需要的自己去下載). 本文將展示點陣圖轉換為向量圖的過程。 第一步:開啟inkscape。 第二步:ctrl+o開啟一個位圖文件。
VS2010 用CxImage讀入各種圖片格式後在記憶體中轉換為HBITMAP點陣圖
最近自學遊戲引擎設計,希望將各種圖片格式讀入記憶體後轉為HBITMAP處理,四處搜尋無果,最終參考以下兩篇博文自己搞定之 http://blog.csdn.net/wu_xiangwei/article/details/5096529 http://www.cnblogs.
如何將點陣圖物件儲存為BMP檔案
GDI中點陣圖物件是很常見的GDI物件,但是無論是SDK,還是MFC都沒有提供現在的函式或是方法來將一個位圖物件儲存為一個BMP檔案,這裡介紹一下儲存方法。 點陣圖檔案格式: DIB檔案有四個主要部分: 檔案表頭(BITMAPFILEHEADER) 資訊表頭 (BITM