MFC画图

使用原始代码:

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());

  

你可能感兴趣的:(mfc)