CISBitmap派生的VC++位圖透明類實例
本文所述為一個由CISBitmap派生的VC++位圖透明類,可以方便實現(xiàn)BMP圖像的透明處理,主要包含兩個文件,使用時主需要將其引入到你的C++工程中即可,具體的類代碼如下:
CISBitmap.cpp文件代碼如下:
#include <stdafx.h> #include "CISBitmap.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif CCISBitmap::CCISBitmap() { m_crBlack = 0; m_crWhite = RGB(255,255,255); } CCISBitmap::~CCISBitmap() { } int CCISBitmap::Width() { BITMAP bm; GetBitmap(&bm); return bm.bmWidth; } int CCISBitmap::Height() { BITMAP bm; GetBitmap(&bm); return bm.bmHeight; } void CCISBitmap::DrawTransparent(CDC * pDC, int x, int y, COLORREF crColour) { COLORREF crOldBack = pDC->SetBkColor(m_crWhite); COLORREF crOldText = pDC->SetTextColor(m_crBlack); CDC dcImage, dcTrans; dcImage.CreateCompatibleDC(pDC); dcTrans.CreateCompatibleDC(pDC); CBitmap* pOldBitmapImage = dcImage.SelectObject(this); CBitmap bitmapTrans; int nWidth = Width(); int nHeight = Height(); bitmapTrans.CreateBitmap(nWidth, nHeight, 1, 1, NULL); CBitmap* pOldBitmapTrans = dcTrans.SelectObject(&bitmapTrans); dcImage.SetBkColor(crColour); dcTrans.BitBlt(0, 0, nWidth, nHeight, &dcImage, 0, 0, SRCCOPY); pDC->BitBlt(x, y, nWidth, nHeight, &dcImage, 0, 0, SRCINVERT); pDC->BitBlt(x, y, nWidth, nHeight, &dcTrans, 0, 0, SRCAND); pDC->BitBlt(x, y, nWidth, nHeight, &dcImage, 0, 0, SRCINVERT); dcImage.SelectObject(pOldBitmapImage); dcTrans.SelectObject(pOldBitmapTrans); pDC->SetBkColor(crOldBack); pDC->SetTextColor(crOldText); }
CISBitmap.h文件代碼如下:
//請保存為文件名:CISBitmap.h #if !defined(AFX_CISBITMAP_H__08BA6EB3_DB4C_11D1_8A89_0040052E2D91__INCLUDED_) #define AFX_CISBITMAP_H__08BA6EB3_DB4C_11D1_8A89_0040052E2D91__INCLUDED_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 class CCISBitmap : public CBitmap { public: CCISBitmap(); virtual ~CCISBitmap(); int Height(); int Width(); virtual void DrawTransparent(CDC* pDC, int x, int y, COLORREF crColour); private: COLORREF m_crBlack; COLORREF m_crWhite; }; #endif // !defined(AFX_CISBITMAP_H__08BA6EB3_DB4C_11D1_8A89_0040052E2D91__INCLUDED_)
感興趣的朋友可以將本文所述代碼放到自己的VC++工程文件中測試一下運(yùn)行效果,相信會對大家的VC++項目開發(fā)起到一定的幫助作用。
上一篇:VC++實現(xiàn)CStdioFile寫入及讀取文件并自動換行的方法
欄 目:C語言
下一篇:VC++中HTControl控件類的CHTSlider控制桿控件類簡介
本文標(biāo)題:CISBitmap派生的VC++位圖透明類實例
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3517.html
您可能感興趣的文章
- 01-10深入分析父子線程、進(jìn)程終止順序不同產(chǎn)生的結(jié)果
- 01-10C++空類詳解
- 01-10C++中基類和派生類之間的轉(zhuǎn)換實例教程
- 01-10C++中關(guān)于委派(Delegates)的實現(xiàn)示例
- 01-10詳解C++中基類與派生類的轉(zhuǎn)換以及虛基類
- 01-10深入解析C++中派生類的構(gòu)造函數(shù)
- 01-10解析C++中多層派生時的構(gòu)造函數(shù)及一些特殊形式
- 01-10解讀C++編程中派生類的構(gòu)成和創(chuàng)建
- 01-10簡單介紹C++編程中派生類的析構(gòu)函數(shù)
- 01-10解析C++中派生的概念以及派生類成員的訪問屬性


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實例總結(jié)