Code
ImagingHelper m_imgBoard;
if(m_imgBoard.LoadImageFromRes(MzGetInstanceHandle(),RT_RCDATA,MAKEINTRESOURCE(IDR_BOARD),
true,true)==FALSE)
return FALSE;
m_rsWidth=m_imgBoard.GetImageWidth();
m_rsHeight=m_imgBoard.GetImageHeight();
m_memHdc=CreateCompatibleDC(GetDC(NULL)); //创建与设备兼容的设备DC
HBITMAP hBitMap=CreateCompatibleBitmap(GetDC(NULL),m_rsWidth,m_rsHeight);// 创建与设备兼容的位图
SelectObject(m_memHdc,hBitMap); //将空的位图选进设备DC
RECT rcOfMemDc={0,0,m_rsWidth,m_rsHeight};
m_imgBoard.Draw(m_memHdc,&rcOfMemDc);
GetBoardDC(m_memHdc);
ImageHelper是已经封装好的类。它使用了Com组建IImgFactory处理将png jpg等格式的图片转换成位图。
LoadImageFromRes方法是从RT_RCDATA类型的资源中加载图片。
步骤:
创建与设备兼容的设备DC。
创建与设备兼容的位图
将空的位图选进设备DC
将位图画在在内存DC中
最后用StretchBlt选进屏幕DC
注意
加载的时候在初始化中加载 提高效率.而不用每次画的时候再重新加载
HBITMAP hBitMap=CreateCompatibleBitmap(GetDC(NULL),m_rsWidth,m_rsHeight);
其中的第一个参数必须是GetDC(NULL),而不能是m_memHdc。至于原因我也不太清楚
明天继续讲如何用组建来完成图片的格式转换