1. 程式人生 > >MFC中去掉bmp圖片的背景色

MFC中去掉bmp圖片的背景色

以下程式碼是本人從網上找的,和大家分享一下^

(note:)這是去掉背景色繪製BMP圖片的程式碼

void TransparentBitmap(HDC hdc, HBITMAP hBitmap, int xStart, int yStart, int xadd , int yadd , COLORREF cTransparentColor) {    

BITMAP   m_bm;   COLORREF   cColor;  

 // 建立臨時DC  

 HDC   hMem, hBack, hObject, hTemp, hSave;  

hBack   = CreateCompatibleDC(hdc);  

 hObject = CreateCompatibleDC(hdc);  

hMem   = CreateCompatibleDC(hdc);  

 hSave   = CreateCompatibleDC(hdc);    

 hTemp   = CreateCompatibleDC(hdc);  

// 選入點陣圖

  SelectObject(hTemp, hBitmap);    

GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&m_bm);  

 //顯示點陣圖寬高

  POINT     ptSize;   /

/ 取得點陣圖的寬度

  ptSize.x = m_bm.bmWidth;  

  // 取得點陣圖的該度  

ptSize.y = m_bm.bmHeight;    

  // 轉換為邏輯點值  

 DPtoLP(hTemp, &ptSize, 1);  

 // 建立臨時點陣圖  

 HBITMAP   bmBack, bmObject, bmMem, bmSave;  

// 單色點陣圖

  bmBack   = CreateBitmap(ptSize.x, ptSize.y, 1, 1, NULL);  

  bmObject = CreateBitmap(ptSize.x, ptSize.y, 1, 1, NULL);  

 // 與裝置相容點陣圖   bmMem   = CreateCompatibleBitmap(hdc, ptSize.x, ptSize.y);  

 bmSave     = CreateCompatibleBitmap(hdc, ptSize.x, ptSize.y);  

// 將建立的臨時點陣圖選入臨時DC中  

HBITMAP   OldbmBack, OldbmObject, OldbmMem, OldbmSave;   OldbmBack   = (HBITMAP)SelectObject(hBack, bmBack);  

OldbmObject = (HBITMAP)SelectObject(hObject, bmObject);  

 OldbmMem   = (HBITMAP)SelectObject(hMem, bmMem);  

OldbmSave   = (HBITMAP)SelectObject(hSave, bmSave);  

// 設定對映模式  

 SetMapMode(hTemp, GetMapMode(hdc));  

// 先保留原始點陣圖  

 BitBlt(hSave, 0, 0, ptSize.x, ptSize.y, hTemp, 0, 0, SRCCOPY);  

// 將背景顏色設定為需透明的顏色  

 cColor = SetBkColor(hTemp, cTransparentColor);  

 // 建立目標遮蔽碼

  BitBlt(hObject, 0, 0, ptSize.x, ptSize.y, hTemp, 0, 0, SRCCOPY);  

// 恢復源DC的原始背景色  

SetBkColor(hTemp, cColor);  

// 建立反轉的目標遮蔽碼  

BitBlt(hBack, 0, 0, ptSize.x, ptSize.y, hObject, 0, 0, NOTSRCCOPY);  

 // 拷貝主DC的背景到目標DC  

 BitBlt(hMem, 0, 0, ptSize.x, ptSize.y, hdc, xStart, yStart, SRCCOPY);  

 // 遮蔽點陣圖的顯示區  

BitBlt(hMem, 0, 0, ptSize.x, ptSize.y, hObject, 0, 0, SRCAND);  

 // 遮蔽點陣圖中的透明色  

BitBlt(hTemp, 0, 0, ptSize.x, ptSize.y, hBack, 0, 0, SRCAND);  

// 將點陣圖與目標DC的背景左異或操作  

 BitBlt(hMem, 0, 0, ptSize.x, ptSize.y, hTemp, 0, 0, SRCPAINT);  

// 拷貝目標到螢幕上  

StretchBlt(hdc, xStart, yStart, ptSize.x+xadd, ptSize.y+yadd, hMem, 0, 0, ptSize.x, ptSize.y,SRCCOPY);  

// 恢復原始點陣圖  

BitBlt(hTemp, 0, 0, ptSize.x, ptSize.y, hSave, 0, 0, SRCCOPY);  

 // 刪除臨時記憶體點陣圖  

DeleteObject(SelectObject(hBack, OldbmBack));  

 DeleteObject(SelectObject(hObject, OldbmObject));  

DeleteObject(SelectObject(hMem, OldbmMem));  

 DeleteObject(SelectObject(hSave, OldbmSave));

// 刪除臨時記憶體DC  

DeleteDC(hMem);  

eleteDC(hBack);  

eleteDC(hObject);  

DeleteDC(hSave);  

 DeleteDC(hTemp); }

相關推薦

MFC去掉bmp圖片景色

以下程式碼是本人從網上找的,和大家分享一下^ (note:)這是去掉背景色繪製BMP圖片的程式碼 void TransparentBitmap(HDC hdc, HBITMAP hBitmap, int xStart, int yStart, int xadd , i

android 通過不同的條件,改變listview字型顏色及景色

結果圖: 通過介面卡進行操作: public class SystemAdapter extends BaseAdapter { private ArrayList<SjClass> sData; private Context sContext;

MFC新增GIF圖片

1、下載上述文章中的軟體包,將其中的PictureEx.h,PictureEx.cpp這兩個檔案新增到工程中。 2、在對話方塊控制元件上新增Picture Control(圖片控制元件),修改其屬性:ID(TYPE:選Rectangle),不修改的話,ClassWiard不能新增CSatic控制變數,修改

Delphibmp圖片轉換成jpg圖片

//bmp圖片轉換成jpg圖片function fun_BmpToJpg(temp, path: String; ACQ: Integer): Boolean; stdcall;var  MyJpeg: TJpegImage;  Bmp: TBitmap;begin  re

body css樣式 設定寬度和景色

<!doctype html> <html> <head> <meta charset="utf-8"> <title>無標題文件</title> <style type="text/css"&g

改變MFC picture control控制元件景色

定義控制元件相關變數: m_picture; 在OnPaint()中新增下列程式碼 CRect prect;  m_picture.GetClientRect(&prect);   //獲取區域  FillRect(m_picture.GetD

VC++ MFC 使用BMP按鈕

*********ins-ert***********編譯出錯請去掉“-”1. 用下面的類CBmpButton2. 例化一個CBmpButton並將 控制元件對映 到想要顯示為BMP的按鈕上3. 注意: 要顯示BMP的按鈕的style屬性應選為: owner draw , b

視窗顯示bmp圖片的過程

建立步驟 我們首先大致瞭解下顯示點陣圖的基本步驟,主要有5步,如圖1所示:                                                            

Python視覺化Matplotlib(3.線條的詳細樣式及線性、儲存圖片、plot的詳細風格和樣式)、景色、點和線的詳細設定

1.修改線條的樣式: linestyle、color、marker(標記) ''' 顏色 color:修改顏色,可以簡寫成c 樣式 linestyle='--' 修改線條的樣式 可以簡寫成 ls 標註 marker : 標註 線寬 linewidth: 設

MFC 對話方塊Picture Control(圖片控制元件)靜態和動態顯示Bmp圖片

        最近有同學問我如何實現MFC基於對話方塊在圖片控制元件中載入圖片?其實使用MFC顯示圖片的方法各種各樣,但是還是有些同學不知道怎樣顯示.以前在《數字影象處理》課程中完成的軟體都是基於單

MFC修改對話方塊、編輯框、button按鈕景色

一、修改對話方塊背景色: 1、為目標對話方塊新增WM_CTRCOLOR訊息; 2、位目標Dlg類定義一個CBrush型別的私有成員變數:m_brushBg,並在其建構函式中將此畫刷初始為 一個淡藍色畫刷(畫刷顏色可任意修改):m_brushBg.CreateSolidBru

MFC在picture controlJPG/BMP/ICO等格式圖片顯示,並支援清除圖片顯示

1、新增一個picture control工具,修改ID為ID_STATIC_PICTURE 2、增加一個按鈕,caption為檢視圖片,雙擊按鈕生成按鈕的點選事件,在事件中新增程式碼,其中_T("Picture Files (*.bmp *.ico *.jpg)|*bmp

MFCrichedit控制元件插入BMP圖片

1在對話方塊中拉入一個RichEdit控制元件。為它關聯一個控制元件值 CRichEditCtrl m_rch; 2加入2個頭檔案 #include <afxole.h> #include <richole.h> 3在對話方塊中,新增成員函式

MFC設定static text控制元件的景色、字型、字號和顏色

在實際的應用中,可以用WM_CTLCOLOR 訊息改變mfc中控制元件的顏色,比如現在就來改變一個static text控制元件的 字型、字型大小、字型顏色和背景色。 例如對話方塊的類為CTestDlg. 1. 在對話方塊的類中新增兩個變數. 方法:在classview選項卡中,選擇CTestDlg,右鍵,

MFC對話方塊改變對話方塊,Group Box, Static Text, Check Box, Edit Ctrl(disabled), Combo Box(disabled), Radio Button等控制元件景色

VC 設定 Dialog, Group Box, Static Text, Check Box, Edit Ctrl(disabled), Combo Box(disabled), Radio Button等背景色 編寫WM_CTLCOLOR訊息的對映函式OnCtlColor

MFC設定Label控制元件的景色、字型、字號和顏色

實際的應用中,可以用WM_CTLCOLOR 訊息改變mfc中控制元件的顏色,比如現在就來改變一個static text控制元件的 字型、字型大小、字型顏色和背景色。 例如對話方塊的類為CTest

PyQt4給QWidget新增背景圖片或者更換景色

class Emit(QtGui.QWidget):     def __init__(self, parent=None):         QtGui.QWidget.__init__(self, parent)         self.setGeometry(300, 300, 200, 100)  

MFCBMP圖片放入失敗問題解決辦法

  之前寫的一個MFC小專案在最後想插入圖片總是報錯,後來查了各種資料終於解決了,圖片放入失敗的錯誤和解決辦法如下。 1:找不到rc.exe,原因是圖片路徑   專案名是中文名字的時候總是會報錯:“找

Swing-JFrame 淺談如何在JFrame新增景色及背景圖片

JFrame預設是BorderLayout JPanel預設是FlowLayout。 1.JFrame設定背景色,注意體會註釋的那句話。 package com.tools; import java.awt.Color; import javax.swing.J

eclipse的字體大小設置和景色設置

技術分享 -1 image ply logs .cn lips app cnblogs 1.字體大小設置 在basic下選擇最後一個TextFont 護眼背景色設置 添加到自定義顏色後點確定 最後一步點apply eclipse中的字體大小設置和背景色設