• 大小: 5.7MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-22
  • 语言: 其他
  • 标签: C++;CxImage  

资源简介

VS2010 用CxImage读入各种图片格式后在内存中转换为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转为位图
HBITMAP Draw::ChangeCxImageToBMP(HDC hDCCxImage* cximage)
{
//创建HBITMAP
HBITMAP BMP=CreateCompatibleBitmap(hDCcximage->GetWidth()cximage->GetHeight());
BITMAP bm;
Getobject(BMPsizeof(BITMAP)&bm);
int pb=bm.bmBitsPixel/8; //获取位图位数
int BytesPerLineOut = (bm.bmWidth*pb + 3) / 4 * 4; //计算每行像素的数据长度
BYTE *pxd = new unsigned char[bm.bmHeight*BytesPerLineOut]; //声明暂存数组

if(cximage->GetBpp()>=16)
{
//直接获取像素数据
int pbx=cximage->GetBpp()/8; //获取CxImage图片的位数
int BytesPerLine = (bm.bmWidth*pbx + 3) / 4 * 4; //计算CxImage每行像素的数据长度
BYTE *pDib = cximage->GetBits(); //获取CxImage图片的像素数据

for (int i = 0; i < bm.bmHeight; i++) 

for (int j = 0; j < bm.bmWidth; 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
{
//通过调色板获取像素数据
for (int i = 0; i < bm.bmHeight; i++) 

for (int j = 0; j < bm.bmWidth; 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); //创建兼容设备
HBITMAP hOldBmp = (HBITMAP)Selectobject(hdcMemsrc); //将位图选入兼容设备,并记录下旧的句柄

BITMAP bm;
Getobject(srcsizeof(BITMAP)&bm);
//输出不镂空位图
BitBlt(hDCxybm.bmWidthbm.bmHeighthdcMem00SRCCOPY);
//清理临时对象,释放资源
Selectobject(hdcMemhOldBmp);
Deleteobject(hOldBmp);
DeleteDC(hdcMem);
}

//以点(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); //创建兼容设备
HBITMAP hOldBmp = (HBITMAP)Selectobject(hdcMemsrc); //将位图选入兼容设备,并记录下旧的句柄

BITMAP bm;
Getobject(srcsizeof(BITMAP)&bm);
//输出镂空位图
TransparentBlt(hDCxybm.bmWidthbm.bmHeighthdcMem00bm.bmWidthbm.bmHeightTransColor);
//清理临时对象,释放资源
Selectobject(hdcMemhOldBmp);
Deleteobject(hOldBmp);
DeleteDC(hdcMem);
}

//以点(xy)为中心绘制镂空位图
void Draw::DrawTransparentCenter(HDC hDCint xint yHBITMAP srcCOLORR

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    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个文件信息

评论

共有 条评论

相关资源