1. 程式人生 > >6.VC(ui)-MFC下實現透明點陣圖

6.VC(ui)-MFC下實現透明點陣圖

 我們在進行程式的介面設計時,常常希望將點陣圖的前景顯示在介面上,而將點陣圖的背景隱藏起來,將點陣圖與介面很自然的融合在一起,本文介紹了透明點陣圖的製作知識,並將透明點陣圖在一個對話方塊中顯示了出來。
直接上圖:原圖:Demo效果圖:

步驟如下:
  1、設定待顯示點陣圖的背景顏色,也就是設定我們希望透明顯示的點陣圖顏色;
  2、點陣圖裝置描述表以"SRCINVERT"的方式繪製(BitBlt)到顯示裝置描述表上;
  3、"掩碼"點陣圖裝置描述表以"SRCAND"的方式繪製(BitBlt)到顯示裝置描述表上;
  4、再次將點陣圖裝置描述表以"SRCINVERT"的方式繪製(BitBlt)到顯示裝置描述表上。
  這樣除"透明色"外的其餘點陣圖部分(影象部分)就被繪製到視窗上了。

1的實現可以通過PS直接取得RGB(224,96,64)。

Demo把圖片貼在一個樣式為SS_BITMAP的static子類下,通過函式void LoadBmpResource(UINT bmpId) ;來載入要透明的圖片ID,程式碼:

通過函式void SetTranClr(COLORREF bgClr) ;來設定要透明掉的顏色,程式碼:

設定TranPic樣式為SS_BITMAP,這樣用SetBitmap,TranPic的大小會自動變成和bmp圖片一樣大,程式碼:

在void TranPic::OnPaint()加入程式碼:

 SRCCOPY src   直接將源點陣圖拷貝到目的裝置上。
 SRCAND src AND dest 將目標檔案中對應於原始檔黑色區域的部分變黑,將對應於白色區域的部分留著不動。
 SRCINVERT src XOR dest 將源插入到目標。二次使用時,將目標恢復到它原來的狀態。在某種條件下可以代替SRCPAINT 操作。
 SRCPAINT src OR dest 將原始檔中的白色區域刷到目標檔案中。源中的黑色區域不轉換到目標中。

=====》原始碼下載

相關推薦

6.VC(ui)-MFC實現透明點陣

 我們在進行程式的介面設計時,常常希望將點陣圖的前景顯示在介面上,而將點陣圖的背景隱藏起來,將點陣圖與介面很自然的融合在一起,本文介紹了透明點陣圖的製作知識,並將透明點陣圖在一個對話方塊中顯示了出來。 直接上圖:原圖:Demo效果圖: 步驟如下:   1、設定待顯示點陣圖的

VC++在MFC呼叫EXCEL各種功能實現

一直以來就對EXCEL的各種功能很崇拜,後來經常使用VC,由於工作的需要,經常會遇到將文字檔案中的龐大資料提取到Excel中運算處理。這個工作量可謂是勞民傷財,但是又不可不做,於是使用最簡單的資料流(fscanf(), fprintf()之類)書寫文字格式的Excel檔案,其弱智程度我就不說了。。。 但是隨著

ADO在VCMFC連線資料庫並插入資料

1,ADO連線資料庫 一般不用ODBC連線資料庫,太古老了,主流用ADO連線資料庫。 連線步驟: 1需要先安裝SQL SEVER2008。 啟動執行伺服器SQL SEVER(MSSQLSERVER)啟動。 登入SQL SEVER 建表字段: 上面這些都是在SQL SE

MFC實現圖形學之Hermite、Bezier曲線的繪製

//*******************************************************//捕捉滑鼠左鍵按下訊息,獲得兩個起始控制點的座標//******************************************************

MFC透明點陣顯示函式

研究好久才弄好,註釋的比較詳細,不明白的函式可以參考MSDN   bool TransparentDIB(CBitmap * dib, /*要繪製的點陣圖*/ CDC * pDC, /*目標DC*/ CRect * rct, /*目標矩形*/ C

VC對話方塊使用OnEraseBkgnd函式點陣背景並透明

1、使用OnEraseBkgnd函式實現對話方塊點陣圖背景 BOOL CDisplayBmpBackGroundDlg::OnEraseBkgnd(CDC   *pDC)   //增加擦除背景函式 {  CRect rect;  GetClientRect(&re

MFC中當儲存點陣時,圖片為全黑的解決辦法

        需要建立相容點陣圖,建立相容DC,然後需要將點陣圖選入DC中,再將螢幕DC的影象拷貝到建立的相容記憶體DC中。 ······ CRect rect1; GetClientRect(&rect1);

使用GDI+實現24 點陣轉32位點陣

  今天利用修改影象的alpha通道實現了影象的倒影,但是在對影象進行測試的時候,發現24位的點陣圖不能實現倒影,究其原因是24位以下的影象沒有alpha通道,也就沒辦法利用修改alpha通道的方式去實現影象的倒影。於是就想辦法實現24點陣圖像轉成32點陣圖像。也就能具有al

MFC 為按鈕載入點陣 CBitmapButton

系統環境:Windows 7 軟體環境:Visual C++ 2008 SP1 本次目的:使用點陣圖按鈕,並且設定按鈕的滑鼠懸停效果       在用MFC開發時,介面是比較不好開發的一塊。VC中自帶了CBitmapButton類,但是用途不多,網上很多Button類的

透明點陣的顯示(TransparentBlt函式)

包含透明色的點陣圖的繪製方法有多種,最簡單的方法是呼叫現成的函式:TransparentBlt,也可以通過自己的程式碼實現類似TransparentBlt的功能,實現過程也有兩種形式,一種是事先做一張掩碼點陣圖,另一種是動態生成掩碼點陣圖。本文將介紹動態生成掩碼點陣圖繪製

emWin實現BMP點陣面板之Button篇

(1)emWin通過skinning方式實現控制元件點陣圖面板: 1)emWin傳統貼面板圖片的方法,是呼叫APP函式XXXX_SetBitmap()方式實現,但非常非常麻煩。 2)要想把控制元件顯示出來,emWin每種控制元件都有1個控制元件繪製函式,而把這個控

透明點陣Ron Gery Microsoft 網路開發技術小組

摘要 這篇文章討論了在 Microsoft Windows 圖形環境中用點陣圖達到透明和遮蔽效果的幾種方法,包括通過模擬和使用特殊的驅動器功能。包含其中的一個小樣本應用程式 TRANSBLT 詳細闡明瞭這篇文章討論的大多數方法。 介紹 使用透明(TRANSPARENT)背景

MFC內建的點陣按鈕CBitmapButton

使用VC++6中的CBitmapButton類,可以做出效果非常好的圖形按鈕來。 使用方法也非常簡單: 1.在對話方塊上拖放一個普通的按鈕控制元件; 2.宣告一個CBitmapButton類的例項;不要使用ClassWizard對映;   //也就是在類嚮導不能新增變數 3.呼叫CBitmapButton

用BitBlt實現透明

把透明貼圖的原理記下來! 實驗素材:有兩張點陣圖:bk.bmp是背景點陣圖,football.bmp包含透明區域,透明色為藍色RGB(0,0,0xff) 實驗目的:以bk.bmp為背景,將football.bmp繪製到背景中,形成如下的最終效果圖。 1.透明點陣圖繪製原理 假設football.bmp -&

建立透明點陣的方法

在做介面開發的時候經常需要去建立透明的點陣圖,由於MFC沒有封裝這樣的函式,經過多方查詢資料和試驗,終於寫出了一個可以建立透明點陣圖的函式,下面給大家分享一下。void BitTrans(int nXDest, // 目標起點X         int nYDest,//

MFC實現點陣透明顯示

好久沒寫部落格了,嘗試著重新開張~ 最近在協助同事修改原有的一個程式,因為要申請個什麼東西,介面上也一直在下功夫。 原來的程式介面是用MFC做的,想新增一些圖片,不過圖片都不是矩形,周圍有白邊,為此,想將這些白邊做透明處理。遍尋網上解決方案,有所獲,如下: 我們在

MFC + CxImage 實現自繪半透明按鈕

processor 專用 win dword ssa ont false set 技術 btn.h [cpp] view plain copy #pragma once // CBtn #include "ximage

vue基於mint-ui元件loadmore實現上拉載入更多,拉重新整理功能

這個是模擬手機寫的簡單樣式,不要在意這些細節,為了撐滿容器每次載入十二   那就開始程式碼了  ==》 先安裝 mint-ui 在main.js中引入mint-ui的css樣式:  import 'mint-ui/lib/style.css' 在

vc++6中生成mfc.bsc檔案和使用方法

 MFC.bsc檔案的生成方法  首先進入DOS命令模式:  C:/Program Files/Microsoft Visual Studio/VC98/bin目錄下執行VCVARS32.BAT, 然後再進入C:/Program&n

django學習——python 3.6實現xadmin

本人在virtualenv中進行django(1.11版本)學習,在安裝xadmin中出現各種問題,安裝總結如下。 1、xadmin的安裝 直接採用 pip install xadmin會報錯,安裝辦法:從官網https://github.com/sshws