使用原始代码:
CBitmap
bitmap; HBITMAP hBitmap; //加载图片资源 hBitmap
= ( HBITMAP )::LoadImage(NULL,
TEXT( "xx.bmp" ),
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_SHARED); if (hBitmap
== NULL) { MessageBox(TEXT( "加载图片失败!" )); return ; } //把windows
gdi对象附加到cgdiobject对象 bitmap.Attach(hBitmap); //获得图片高宽等信息 BITMAP
bm; bitmap.GetBitmap(&bm); //创建与本对话框兼容的内存DC CDC
dcMem; dcMem.CreateCompatibleDC(GetDC()); //把位图选进内存DC CBitmap
*pOldBitmap = (CBitmap*)dcMem.SelectObject(bitmap); CPaintDC
dc( this );
//
用于绘制的设备上下文 //获取对话框客服区域 CRect
rect; GetClientRect(&rect); //设置StretchBlt拉伸方式,不然图片显示会有斑点 dc.SetStretchBltMode(HALFTONE); //画图 dc.StretchBlt(rect.left,
rect.top, rect.Width() / 4, rect.Height() / 2, &dcMem, 0, 0, bm.bmWidth, bm.bmHeight, BLACKNESS | SRCCOPY); dcMem.SelectObject(pOldBitmap); |
使用alt的CImage类更简单,且处理的图片类可以为bmp、jpg、png、gif。
代码如下:
CImage
img; if (img.Load(TEXT( "yy.jpg" ))) { MessageBox(TEXT( "加载图片失败!" )); return ; } CRect
rect; GetClientRect(&rect); img.StretchBlt(GetDC()->GetSafeHdc(),
0, 0, rect.Width(), rect.Height()); |