您的位置:首页 > 其它

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

2009-08-31 16:08 260 查看
BOOLStretchBlt(
intx,//指定目的矩形区域左上角的X坐标
inty,//指定目的矩形区域左上角的Y坐标
intnWidth,//指定目的矩形区域的宽度
intnHeight,//指定目的矩形区域的高度
CDC*pSrcDC,
intxSrc,//指定源矩形区域左上角的X坐标
intySrc,//指定源矩形区域左上角的Y坐标
intnSrcWidth,//指定源矩形区域的宽度
intnSrcHeight,//指定源矩形区域的高度
DWORDdwRop//此参数参考MSDN,SRCCOPY类型为直接拷贝
);//此函数将一个位图资源从一个矩形区域拷贝到另一个矩形区域,即缩放位图

BOOLTransparentBlt(
intxDest,
intyDest,
intnDestWidth,
intnDestHeight,
CDC*pSrcDC,
intxSrc,
intySrc,
intnSrcWidth,
intnSrcHeight,
UINTclrTransparent
);//此函数同样具有缩放功能,但此函数最后一个参数用来指定作为透明色的RGB;


BOOLBitBlt(
intx,
inty,
intnWidth,
intnHeight,
CDC*pSrcDC,
intxSrc,
intySrc,
DWORDdwRop
);//此函数同样用来拷贝位图资源,但不具备缩放功能

用法举例:

CPaintDCdc(this);
CBitmapBackBMP;
BackBMP.LoadBitmapW(IDB_BITMAP1);
BITMAPbm;
BackBMP.GetBitmap(&bm);

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

CBitmapForeBMP;
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));
ImageDC.SelectObject(pOldImageBMP);

[/code]
[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: