TransparentBlt、StretchBlt与BitBlt三个函数的区别

本文详细介绍了TransparentBlt、StretchBlt与BitBlt三个Windows GDI函数的使用方法及区别。TransparentBlt用于带有透明色的位图复制,StretchBlt可缩放并复制位图,而BitBlt则进行直接位图复制,不具备缩放功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TransparentBlt、StretchBlt与BitBlt三个函数的区别

BOOL 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   //此参数参考MSDN,SRCCOPY类型为直接拷贝

);  //此函数将一个位图资源从一个矩形区域拷贝到另一个矩形区域,即缩放位图 

BOOL TransparentBlt(

   int xDest,

   int yDest,

      int nDestWidth,

      int nDestHeight,

   CDC* pSrcDC,

   int xSrc,

   int ySrc,

   int nSrcWidth,

   int nSrcHeight,

   UINT clrTransparent 

);  //此函数同样具有缩放功能,但此函数最后一个参数用来指定作为透明色的RGB;

 

BOOL BitBlt(

   int x,

   int y,

   int nWidth,

   int nHeight,

   CDC* pSrcDC,

   int xSrc,

   int ySrc,

   DWORD dwRop 

);  //此函数同样用来拷贝位图资源,但不具备缩放功能.

 

用法举例:

CPaintDC dc(this);    CBitmap BackBMP;

BackBMP.LoadBitmapW(IDB_BITMAP1);

BITMAP bm;    BackBMP.GetBitmap(&bm);

CDC ImageDC;

ImageDC.CreateCompatibleDC(&dc);

CBitmap* pOldImageBMP = ImageDC.SelectObject(&BackBMP);

dc.StretchBlt(0, 0, bm.bmWidth+15, bm.bmHeight+15, &ImageDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY); 

ImageDC.SelectObject(pOldImageBMP);

CBitmap ForeBMP;

ForeBMP.LoadBitmapW(IDB_BITMAP2);

ForeBMP.GetBitmap(&bm);

pOldImageBMP = ImageDC.SelectObject(&ForeBMP);

dc.TransparentBlt(0, 0, bm.bmWidth+15, bm.bmHeight+15, &ImageDC, 0, 0, bm.bmWidth, bm.bmHeight, RGB(255, 255, 255));

//源BitMap中的RGB(255, 255, 255)值当作透明颜色,也就是白色。

ImageDC.SelectObject(pOldImageBMP);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值