-
大小: 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个文件信息
- 上一篇:材料力学习题答案 刘鸿文
- 下一篇:矩阵论-戴华-南航.pdf
评论
共有 条评论