BitBlt介绍

文章描述:-2022年2月19日发(作者:setinterval) 设备上下文绘图有很多种方法。例如通过创建位图画刷,利用其填充一个区域来实现图像的绘制。此外,还可以使用CDC类的位图函数来输出位图到设备上下文中。 BitBlt 用于从原设备中复制位图到目标设备,语法格式如下: BOOL BitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSr

-

BitBlt介绍 2022年2月19日发(作者:setinterval)



设备上下文绘图有很多种方法。例如通过创建位图画刷,利用其填充一个区域来实现
图像的绘制。此外,还可以使用CDC类的位图函数来输出位图到设备上下文中。
BitBlt 用于从原设备中复制位图到目标设备,语法格式如下:
BOOL BitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int
ySrc,DWORD dwRop);
x:目标矩形区域的左上角x轴坐标点。
y:目标矩形区域的左上角y轴坐标点。
nWidth:在目标设备中绘制位图的宽度。
nHight:在目标设备中绘制位图的高度。
pSrcDC:源设备上下文对象指针。
xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。
ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。
dwRop:光栅操作代码

dwRop有如下选择:
BLACKESS
DSTIVERT
MERGECOPY
MERGEPAIT
合并
OTSRCCOPY
OTSRCERASE
结果颜取反
PATCOPY
PATIVERT

PATPAIT
的颜
SRCAD
SRCCOPY
SRCERASE
SRCIVERT
SRCPAIT
WHITEESS
使用黑填充目标区域
目标矩阵区域颜取反
使用与运算组合原设备矩形区域的颜和目标设备的画刷
使用或运算将反向的源矩形区域的颜和目标矩形区域的颜
复制源设备区域的反到目标设备中
使用或运算组合源设备区域与目标设备区域的颜,然后对
复制源设备当前选中的画刷到目标设备
使用异或运算组合目标设备选中的画刷和目标设备区域的颜
通过或运算组合目标区域当前选中的画刷和源设备区域反转
使用与运算组合源设备和目标设备区域的颜
直接复制源设备区域到目标设备中
使用与运算组合目标设备区域的反与源设备区域的颜
使用异或运算组合源设备区域颜和目标设备区域颜
使用或运算组合源设备区域颜和目标设备区域颜
使用白填充目标区域

StretchBlt与BitBlt不同在于StretchBlt方法能够延伸或收缩位图以适应目标区域的大
小。格式如下:
BOOL StrevhBlt(int x,int y,int nWidth,int nHeight,CDC* pSrcDC,int xSrc,int ySrc,int
nSrcWidth,int nSrcHeight,DWORD dwRop);




x:目标矩形区域的左上角x轴坐标点。
y:目标矩形区域的左上角y轴坐标点。
nWidth:在目标设备中绘制位图的宽度。
nHight:在目标设备中绘制位图的高度。
pSrcDC:源设备上下文对象指针。
xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。
ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。
nSrcWidth;需要复制的位图宽度。
nSrcHeight;需要复制的位图高度。
dwRop:光栅操作代码。

下面是两种方法对比程序,程序代码如下:
void CoutoutBmpView::OnDraw(CDC* pDC)
{
COutputBmpDoc* pDoc = GetDocument();获取文档对象
ASSERT_VALID(pDoc);验证文档对象
CDC memDC;定义一个设备上下文
CompatibleDC(pDC);创建兼容的设备上下文
CBitmap bmp;定义位图对象
tmap(IDB_BKBITMAP);加载位图
Object(&bmp);选中位图对象
pDC->BitBlt(30,20,180,180,&memDC,1,1,SRCCOPY);绘制位图
以上是利用BitBlt来绘制位图
CRect rc(30,20,210,200);定义一个区域
CBrush brush(RGB(0,0,0));定义一个黑的画刷
pDC->FrameRect(rc,&brush);绘制矩形边框
只是用来观察两者区别的,绘制一个矩形框
Rect(220,0);移动区域
下边是利用StretchBlt绘制的位图
BITMAP BitInfo;定义位图结构
map(&BitInfo);获取位图信息
int x = h;获取位图宽度
int y = ht;获取位图高度
pDC->StretchBlt(,,(),(),&memDC,0,0,x,y,SRCCOPY);
绘制位图
pDC->FrameRect(rc,&brush);绘制边框
Object();释放画刷
DC();释放设备上下文
Object();释放位图对象
}


-

BitBlt介绍

发布时间:2022-02-19 01:16:09
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 9 条评论,875人围观)

最近发表

随便看看

热门文章

标签列表