遍匈 / MFC縮殻 /

MFC聞喘GDI斤嵆CBitmap幣箭

了夕頁宙峰夕崧議恷酒汽岷鉱議匯嶽圭塀?委夕崧罪?蛍葎吉寂鉦議W双?忿?蛍葎吉寂鉦議H双?噐頁宸倖夕崧寄弌瓜協吶葎蛍掩楕W*H。了夕蛍葎汽弼夕才科弼夕?曝蛍圭隈頁夕頭議匯倖崧殆泣辛參喘謹富嶽冲弼燕幣。孖壓宸戦初府議了夕頁恬葎GDI斤嵆栖初府議?朔中氏壓了夕廨籾嶄初府了夕。

壓MFC嶄CBitmap窃撃廾阻了夕斤嵆式凪児云荷恬?辛參聞喘謹嶽圭塀栖幹秀了夕斤嵆。

1) 壓坪贋嶄幹秀了夕斤嵆
BOOL CreateBitmap(
 int nWidth, //了夕錐業
 int nHeight, //了夕互業
 UINT nPlanes, //峺協朕炎譜姥議了中方
 UINT nBitcount, //冲弼了夕
 const void* lpBits //了夕方象
);
輝念坪贋嶄厮贋壓了夕方象?俶勣更夛CBitmap斤嵆宴噐砿尖了夕?緩扮祥辛參酒汽仇距喘CreateBitmap軸辛。

2) 功象BITMAP潤更壓坪贋嶄幹秀了夕斤嵆
BOOL CreateBitmapIndirect(
 LPBITMAP lpBitmap //峺?BITMAP潤更
);
CreateBitmapIndirect嚥CreateBitmap窃貌?脅頁壓坪贋嶄岷俊幹秀了夕斤嵆。遇CreateBitmapIndirect宥狛BITMAP潤更峺協棋幹秀了夕斤嵆議歌方佚連。BITMAP潤更協吶泌和?
typedef struct tagBITMAP
{
 LONG bmType; //了夕窃侏。斤噐貸辞了夕?駅倬葎0
 LONG bmWidth; //了夕錐業?駅倬寄噐0
 LONG bmHeight; //了夕互業?駅倬寄噐0
 LONG bmWidthBytes; //了夕方象嶄匯佩嗤叱倖忖准
 WORD bmPlanes; //峺協朕炎譜姥議了中方
 WORD bmBitsPixel; //峺協耽倖崧殆議了方
 LPVOID bmBits; //了夕方象
} BITMAP;

3) 幹秀嚥峺協譜姥貧和猟惹否議了夕斤嵆
BOOL CreateCompatibleBitmap(
 CDC* pDC, //朕炎DC
 int nWidth, //了夕錐業
 int nHeight //了夕互業
);

4) 貫哘喘殻會彿坿嶄紗墮了夕斤嵆?嗤曾嶽侘塀?辛參功象彿坿兆賜彿坿ID紗墮。
BOOL LoadBitmap(
 LPCTSTR lpszResourceName //了夕彿坿兆?蒸斤揃抄
);
BOOL LoadBitmap(
 UINT nIDResource //了夕彿坿ID
);

幣箭?聞喘GDI斤嵆CBitmap?塋称四?

1) 擬秘了夕彿坿。宥狛紗墮了夕彿坿議圭塀?紗墮8倖了夕彿坿?彿坿ID葎潮範ID。

2) 協吶紙夕潤更才延楚
struct my_Bitmap{
 CRect rect; //夕侘?塋焦瘕?
 CBitmap bmp; //了夕
};
撹埀延楚?my_Bitmap m_my_Bitmap[8];

3) 兜兵晒紙夕曝囃
void CSDITestView::InitRectBitmap()
{
 //紗墮議夕頭寄弌頁128*128
 CRect rect(0,0,128,128);
 for (int i=0;i<8;i++)
 {
 if (i<4)
 {
 //及匯佩夕侘
 CRect rect;
 rect.left=20+i*160;
 rect.top=20;
 rect.right=100+i*160;
 rect.bottom=148;
 m_my_Bitmap[i].rect.CopyRect(rect);
 }
 else
 {
 //及屈佩夕侘
 CRect rect;
 rect.left=20+(i-4)*160;
 rect.top=168;
 rect.right=100+(i-4)*160;
 rect.bottom=296;
 m_my_Bitmap[i].rect.CopyRect(rect);
 }
 }
}

4) 兜兵晒紙夕佚連
void CSDITestView::InitBitmap()
{
 m_my_Bitmap[0].bmp.LoadBitmapW(IDB_BITMAP1);
 m_my_Bitmap[1].bmp.LoadBitmapW(IDB_BITMAP2);
 m_my_Bitmap[2].bmp.LoadBitmapW(IDB_BITMAP3);
 m_my_Bitmap[3].bmp.LoadBitmapW(IDB_BITMAP4);
 m_my_Bitmap[4].bmp.LoadBitmapW(IDB_BITMAP5);
 m_my_Bitmap[5].bmp.LoadBitmapW(IDB_BITMAP6);
 m_my_Bitmap[6].bmp.LoadBitmapW(IDB_BITMAP7);
 m_my_Bitmap[7].bmp.LoadBitmapW(IDB_BITMAP8);
}

5) 醤悶紙夕狛殻。壓OnDraw痕方嶄耶紗和中議旗鷹?
//寡喘GDI CBitmap紙夕 S
CRect WndRect;
GetWindowRect(&WndRect);
ScreenToClient(&WndRect);
CClientDC cdc(this);
CDC mdc,TempDc;
BITMAP BmpInfo;
CBitmap ClientBmp,*pOldBmp;
//幹秀嚥譜姥DC惹否議坪贋DC
mdc.CreateCompatibleDC(&cdc);
TempDc.CreateCompatibleDC(&cdc);
//幹秀嚥譜姥DC惹否議了夕斤嵆
ClientBmp.CreateCompatibleBitmap(&cdc,WndRect.right,WndRect.bottom);
mdc.SelectObject(&ClientBmp);
//卆肝委了夕薮欺坪贋DC
for (int i=0;i<8;i++)
{
 TempDc.SelectObject(&m_my_Bitmap[i].bmp);
 m_my_Bitmap[i].bmp.GetBitmap(&BmpInfo);
 mdc.TransparentBlt(m_my_Bitmap[i].rect.left,m_my_Bitmap[i].rect.top,BmpInfo.bmWidth,BmpInfo.bmHeight,&TempDc,0,0,BmpInfo.bmWidth,BmpInfo.bmHeight,RGB(255,255,255));
}
//委坪贋DC薮欺譜姥DC貧
cdc.BitBlt(0,0,WndRect.right,WndRect.bottom,&mdc,0,0,SRCCOPY);
//桟廠賠尖
ClientBmp.DeleteObject();
mdc.DeleteDC();
//寡喘GDI CBitmap紙夕 E

6) 塰佩潤惚泌夕4-4-1侭幣?

夕4-4-1 聞喘GDI斤嵆CBitmap?塋祥柴?

凪糞?音叙叙斤噐了夕荷恬俶勣枠亟欺坪贋DC朔亟欺譜姥DC?叱窄侭嗤紙夕狛殻脅哘乎恆儉宸倖圻尖。音峭頁葎阻契峭橋強?匆葎阻戻幅丼楕。輝隼?泌惚嗤蒙歩議俶箔議三?椎祥総輝艶胎阻。

AltStyle によって変換されたページ (->オリジナル) /