-
大小: 5.7MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-09-22
- 語言: 其他
- 標(biāo)簽: C++;CxImage??
資源簡介
VS2010 用CxImage讀入各種圖片格式后在內(nèi)存中轉(zhuǎn)換為HBITMAP位圖Demo

代碼片段和文件信息
/*************************************
GDI繪圖源文件?Draw.cpp
*************************************/
#include?“Draw.h“
#pragma???comment(lib“gdi32.lib“) //引用庫
#pragma???comment(lib“msimg32.lib“)
#pragma ??comment(lib“CxImageLib\\cximage.lib“)
////////////////////////////////////////////////////////////////////////////////////////////////////////
//將CxImage轉(zhuǎn)為位圖
HBITMAP?Draw::ChangeCxImageToBMP(HDC?hDCCxImage*?cximage)
{
//創(chuàng)建HBITMAP
HBITMAP?BMP=CreateCompatibleBitmap(hDCcximage->GetWidth()cximage->GetHeight());
BITMAP?bm;
Getobject(BMPsizeof(BITMAP)&bm);
int?pb=bm.bmBitsPixel/8; //獲取位圖位數(shù)
int?BytesPerLineOut?=?(bm.bmWidth*pb?+?3)?/?4?*?4; //計(jì)算每行像素的數(shù)據(jù)長度
BYTE?*pxd?=?new?unsigned?char[bm.bmHeight*BytesPerLineOut];?//聲明暫存數(shù)組
if(cximage->GetBpp()>=16)
{
//直接獲取像素?cái)?shù)據(jù)
int?pbx=cximage->GetBpp()/8; //獲取CxImage圖片的位數(shù)
int?BytesPerLine?=?(bm.bmWidth*pbx?+?3)?/?4?*?4; //計(jì)算CxImage每行像素的數(shù)據(jù)長度
BYTE?*pDib?=?cximage->GetBits(); //獲取CxImage圖片的像素?cái)?shù)據(jù)
for?(int?i?=?0;?i? {?
for?(int?j?=?0;?j? {?
int?srcRGB_B=(bm.bmHeight-1-i)*BytesPerLine+j*pbx;
int?desRGB_B=i*bm.bmWidthBytes+j*pb;
pxd[desRGB_B]?=?pDib[srcRGB_B];
pxd[desRGB_B+1]?=?pDib[srcRGB_B+1];
pxd[desRGB_B+2]?=?pDib[srcRGB_B+2];
}?
}
}
else
{
//通過調(diào)色板獲取像素?cái)?shù)據(jù)
for?(int?i?=?0;?i? {?
for?(int?j?=?0;?j? {?
RGBQUAD?srcRGB_B=cximage->GetPixelColor(jbm.bmHeight-1-i);
int?desRGB_B=i*bm.bmWidthBytes+j*pb;
pxd[desRGB_B]?=?srcRGB_B.rgbBlue;
pxd[desRGB_B+1]?=?srcRGB_B.rgbGreen;
pxd[desRGB_B+2]?=?srcRGB_B.rgbRed;
}?
}
}
SetBitmapBits(BMPbm.bmHeight*bm.bmWidthBytespxd);
delete[]?pxd;
return?BMP;
}
//在hDC的指定位置(xy)繪制不鏤空位圖
void?Draw::DrawNormal(HDC?hDCint?xint?yHBITMAP?src)
{
HDC?hdcMem=?CreateCompatibleDC(hDC); //創(chuàng)建兼容設(shè)備
HBITMAP?hOldBmp?=?(HBITMAP)Selectobject(hdcMemsrc); //將位圖選入兼容設(shè)備,并記錄下舊的句柄
BITMAP?bm;
Getobject(srcsizeof(BITMAP)&bm);
//輸出不鏤空位圖
BitBlt(hDCxybm.bmWidthbm.bmHeighthdcMem00SRCCOPY);
//清理臨時(shí)對(duì)象,釋放資源
Selectobject(hdcMemhOldBmp);
Deleteobject(hOldBmp);
DeleteDC(hdcMem);
}
//以點(diǎn)(xy)為中心繪制不鏤空位圖
void?Draw::DrawNormalCenter(HDC?hDCint?xint?yHBITMAP?src)
{
BITMAP?bm;
Getobject(srcsizeof(BITMAP)&bm);
Draw::DrawNormal(hDCx-bm.bmWidth/2y-bm.bmHeight/2src);
}
//在hDC的指定位置(xy)繪制鏤空位圖
void?Draw::DrawTransparent(HDC?hDCint?xint?yHBITMAP?srcCOLORREF?TransColor)
{
HDC?hdcMem=?CreateCompatibleDC(hDC); //創(chuàng)建兼容設(shè)備
HBITMAP?hOldBmp?=?(HBITMAP)Selectobject(hdcMemsrc); //將位圖選入兼容設(shè)備,并記錄下舊的句柄
BITMAP?bm;
Getobject(srcsizeof(BITMAP)&bm);
//輸出鏤空位圖
TransparentBlt(hDCxybm.bmWidthbm.bmHeighthdcMem00bm.bmWidthbm.bmHeightTransColor);
//清理臨時(shí)對(duì)象,釋放資源
Selectobject(hdcMemhOldBmp);
Deleteobject(hOldBmp);
DeleteDC(hdcMem);
}
//以點(diǎn)(xy)為中心繪制鏤空位圖
void?Draw::DrawTransparentCenter(HDC?hDCint?xint?yHBITMAP?srcCOLORR
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????3352194??2015-01-12?01:31??#release\cximage.lib
?????文件???10620708??2015-01-12?13:49??Demo\CxImageLib\cximage.lib
?????文件???????2836??2008-01-30?04:32??Demo\CxImageLib\xfile.h
?????文件???????1855??2008-01-29?06:05??Demo\CxImageLib\ximacfg.h
?????文件???????4200??2008-01-29?07:00??Demo\CxImageLib\ximadef.h
?????文件??????28464??2008-02-02?22:00??Demo\CxImageLib\ximage.h
?????文件???????3002??2015-01-12?01:36??Demo\CxImageLib\xiofile.h
?????文件???????1000??2007-12-15?21:40??Demo\CxImageLib\xmemfile.h
?????文件???????3365??2015-01-13?11:17??Demo\Draw.cpp
?????文件????????813??2015-01-13?11:16??Demo\Draw.h
?????文件??????11056??2015-01-13?00:24??Demo\GameEngine.cpp
?????文件???????4455??2015-01-12?23:15??Demo\GameEngine.h
?????文件???????5638??2015-01-13?11:17??Demo\GameStart.cpp
?????文件????????603??2015-01-13?00:14??Demo\GameStart.h
?????文件????????884??2015-01-13?13:05??Demo\GameStart.sln
????..A..H.?????24064??2015-01-13?13:05??Demo\GameStart.suo
?????文件???????7131??2015-01-12?23:37??Demo\GameStart.vcxproj
?????文件???????1873??2015-01-12?23:37??Demo\GameStart.vcxproj.filters
?????文件????????143??2014-12-15?17:10??Demo\GameStart.vcxproj.user
?????文件?????315734??2012-05-05?07:47??Demo\image\239.png
?????文件?????327405??2008-09-15?20:09??Demo\image\background.jpg
?????文件?????181878??2009-07-31?17:40??Demo\image\Boo.bmp
?????文件??????43861??2008-09-15?20:37??Demo\image\GirlAnima.gif
?????文件??????55144??2013-09-08?13:20??Demo\image\misuzi_3.gif
?????文件???????3262??2008-06-26?22:34??Demo\resource\Arrow.cur
?????文件?????430974??2008-07-26?14:59??Demo\resource\GameIcon.ico
?????文件????1920056??2008-06-26?22:17??Demo\resource\GameStart.bmp
????..A.SH.??????6144??2008-07-26?15:47??Demo\resource\Thumbs.db
?????文件????2805052??2014-12-23?19:24??Demo\resource.aps
?????文件????????772??2008-07-26?22:22??Demo\resource.h
............此處省略11個(gè)文件信息
- 上一篇:材料力學(xué)習(xí)題答案 劉鴻文
- 下一篇:矩陣論-戴華-南航.pdf
評(píng)論
共有 條評(píng)論