MFC聞喘GDI斤嵆CBitmap幣箭
了夕頁宙峰夕崧議恷酒汽岷鉱議匯嶽圭塀?委夕崧罪?蛍葎吉寂鉦議W双?忿?蛍葎吉寂鉦議H双?噐頁宸倖夕崧寄弌瓜協吶葎蛍掩楕W*H。了夕蛍葎汽弼夕才科弼夕?曝蛍圭隈頁夕頭議匯倖崧殆泣辛參喘謹富嶽冲弼燕幣。孖壓宸戦初府議了夕頁恬葎GDI斤嵆栖初府議?朔中氏壓了夕廨籾嶄初府了夕。
壓MFC嶄CBitmap窃撃廾阻了夕斤嵆式凪児云荷恬?辛參聞喘謹嶽圭塀栖幹秀了夕斤嵆。
1) 壓坪贋嶄幹秀了夕斤嵆
2) 功象BITMAP潤更壓坪贋嶄幹秀了夕斤嵆
3) 幹秀嚥峺協譜姥貧和猟惹否議了夕斤嵆
4) 貫哘喘殻會彿坿嶄紗墮了夕斤嵆?嗤曾嶽侘塀?辛參功象彿坿兆賜彿坿ID紗墮。
2) 協吶紙夕潤更才延楚
3) 兜兵晒紙夕曝囃
4) 兜兵晒紙夕佚連
5) 醤悶紙夕狛殻。壓OnDraw痕方嶄耶紗和中議旗鷹?
6) 塰佩潤惚泌夕4-4-1侭幣?
夕4-4-1 聞喘GDI斤嵆CBitmap?塋祥柴?
凪糞?音叙叙斤噐了夕荷恬俶勣枠亟欺坪贋DC朔亟欺譜姥DC?叱窄侭嗤紙夕狛殻脅哘乎恆儉宸倖圻尖。音峭頁葎阻契峭橋強?匆葎阻戻幅丼楕。輝隼?泌惚嗤蒙歩議俶箔議三?椎祥総輝艶胎阻。
壓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?叱窄侭嗤紙夕狛殻脅哘乎恆儉宸倖圻尖。音峭頁葎阻契峭橋強?匆葎阻戻幅丼楕。輝隼?泌惚嗤蒙歩議俶箔議三?椎祥総輝艶胎阻。