本例将在单文档工程的视图窗口中显示一副位图,窗口的左边为原图,右边为放大后的位图。
本例的demo如下:
首先 在资源视图中插入一副位图,然后在Ondraw函数中实在加载位图和显示
void CMFCApplication18View::OnDraw(CDC* pDC)
{
CMFCApplication18Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
CBitmap bitmap;
CDC dcmem;
bitmap.LoadBitmapW(IDB_BITMAP1);
dcmem.CreateCompatibleDC(pDC);
dcmem.SelectObject(&bitmap);
pDC->BitBlt(0, 0, 200, 150, &dcmem, 0, 0, SRCCOPY);
pDC->TextOutW(40, 170, _T("原始位图图像"));
pDC->StretchBlt(210, 0, 300, 226, &dcmem, 0, 0, 200, 150, SRCCOPY);
}
要点:
显示DDB位图的时候,将位图载入内存设备环境后,需要使用CDC类提供的BitBlt函数将DC中位图复制到目的DC中。BitBlt函数原型如下:
BOOL BitBlt(HDC hdcDest,
int nXDest,
int nYDest,
int nWidth,
int nHeight,
HDC hdcSrc,
int nXSrc,
int nYSrc,
DWORD dwRop);
int nXDest,
int nYDest,
int nWidth,
int nHeight,
HDC hdcSrc,
int nXSrc,
int nYSrc,
DWORD dwRop);
Public Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
hDestDC:指向目标设备环境的
句柄。
x:指定目标矩形区域左上角的X轴逻辑坐标。
y:指定目标矩形区域左上角的Y轴逻辑坐标。