Windows GDI:CDC绘制Bitmap

一、 BitBlt

函数原型:

BOOL CDC::BitBlt(
   int x,          // 目标矩形区域左上角x坐标
   int y,          // 目标矩形区域左上角y坐标
   int nWidth,    // 源矩形区域和目标矩形区域宽度
   int nHeight,   // 源矩形区域和目标矩形区域高度
   CDC* pSrcDC,   // 源设备环境句柄
   int xSrc,      // 源矩形区域左上角x坐标
   int ySrc,      // 源矩形区域左上角y坐标
   DWORD dwRop    // 一般为SRCCOPY
);

功能:

从源设备环境拷贝位图,不具有缩放功能。
从pSrcDC所指向的源设备环境中,拷贝矩形区域(以xSrc, ySrc为左上角,宽为nWidth,高为nHeight)中的位图,到x,y位置。

示例:

CDC dc;
CBitmap bitmap;
......

CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap = memDC.SelectObject(&bitmap);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
dc.BitBlt(0, 0, bmp.bmWidth, bmp.bmHeight, &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(pOldBitmap);

二、 StretchBlt

函数原型:

BOOL CDC::StretchBlt(
   int x,              // 目标矩形区域左上角x坐标
   int y,              // 目标矩形区域左上角y坐标
   int nWidth,         // 目标矩形区域宽度
   int nHeight,        // 目标矩形区域高度
   CDC* pSrcDC,        // 源设备环境句柄
   int xSrc,           // 源矩形区域左上角x坐标
   int ySrc,           // 源矩形区域左上角y坐标
   int nSrcWidth,      // 源矩形区域宽度
   int nSrcHeight,     // 源矩形区域高度
   DWORD dwRop         // 一般为SRCCOPY
);

功能:

从源设备环境拷贝位图,具有缩放功能。
从pSrcDC所指向的源设备环境中,拷贝矩形区域(以xSrc, ySrc为左上角,宽为nSrcWidth,高为nSrcHeight)中的位图,到当前设备环境中的矩形区域(以x,y为左上角,宽为nWidth,高为nHeight)。
源矩形区域的大小和目标矩形区域的大小决定了缩放的比例。

示例:

CDC dc;
CBitmap bitmap;
......

CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap = memDC.SelectObject(&bitmap);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
dc.StretchBlt(
    0, 0, bmp.bmWidth / 2.0, bmp.bmHeight / 2.0, 
    &memDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
memDC.SelectObject(pOldBitmap);

源矩形区域的大小为bmp.bmWidth / 2.0, bmp.bmHeight / 2.0
目标矩形区域的大小为bmp.bmWidth, bmp.bmHeight
所以缩放比例为0.5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值