BitBlt介绍

摘要:
例如,通过创建一个位水墨画,使用它来填充的区域,实现了绘制图像。BitBlt用于从位图复制到目标设备的原始设备,语法格例如,下面的公式:BOOLBitBlt;x:目标矩形区域的左上角x轴坐标点。

该设备上下文绘制非常多的方法。例如,通过创建一个位水墨画,使用它来填充的区域,实现了绘制图像。而且,也可以用CDC位图功能输出位图到设备上下文。

BitBlt 用于从位图复制到目标设备的原始设备,语法格例如,下面的公式:

BOOLBitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORDdwRop);

x:目标矩形区域的左上角x轴坐标点。

y:目标矩形区域的左上角y轴坐标点。

nWidth:在目标设备中绘制位图的宽度。

nHight:在目标设备中绘制位图的高度。

pSrcDC:源设备上下文对象指针。

xSrc:源设备上下文的起点x轴坐标。函数从该起点复制位图到目标设备。

ySrc:源设备上下文的起点y轴坐标。函数从该起点复制位图到目标设备。

dwRop:光栅操作代码

dwRop有例如以下选择:

BLACKNESS 使用黑色填充目标区域

DSTINVERT 目标矩阵区域颜色取反

MERGECOPY 使用与运算组合原设备矩形区域的颜色和目标设备的画刷

MERGEPAINT 使用或运算将反向的源矩形区域的颜色和目标矩形区域的颜色合并

NOTSRCCOPY 复制源设备区域的反色到目标设备中

NOTSRCERASE 使用或运算组合源设备区域与目标设备区域的颜色,然后对结果颜色取反

PATCOPY 复制源设备当前选中的画刷到目标设备

PATINVERT 使用异或运算组合目标设备选中的画刷和目标设备区域的颜色

PATPAINT 通过或运算组合目标区域当前选中的画刷和源设备区域反转的颜色

SRCAND 使用与运算组合源设备和目标设备区域的颜色

SRCCOPY 直接复制源设备区域到目标设备中

SRCERASE 使用与运算组合目标设备区域的反色与源设备区域的颜色

SRCINVERT 使用异或运算组合源设备区域颜色和目标设备区域颜色

SRCPAINT 使用或运算组合源设备区域颜色和目标设备区域颜色

WHITENESS 使用白色填充目标区域

StretchBlt与BitBlt不同在于StretchBlt方法可以延伸或收缩位图以适应目标区域的大小。格式例如以下:

BOOLStrevhBlt(int x,int y,int nWidth,int nHeight,CDC* pSrcDC,int xSrc,int ySrc,intnSrcWidth,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;//定义一个设备上下文

memDC.CreateCompatibleDC(pDC);//创建兼容的设备上下文

CBitmap bmp;//定义位图对象

bmp.LoadBitmap(IDB_BKBITMAP);//载入位图

memDC.SelectObject(&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);//绘制矩形边框

//仅仅是用来观察两者差别的,绘制一个矩形框

rc.OffsetRect(220,0);//移动区域

//下边是利用StretchBlt绘制的位图

BITMAP BitInfo;//定义位图结构

bmp.GetBitmap(&BitInfo);//获取位图信息

int x = BitInfo.bmWidth;//获取位图宽度

int y = BitInfo.bmHeight;获取位图高度

pDC->StretchBlt(rc.left,rc.top,rc.Width(),rc.Height(),&memDC,0,0,x,y,SRCCOPY);//绘制位图

pDC->FrameRect(rc,&brush);//绘制边框

brush.DeleteObject();//释放画刷

memDC.DeleteDC();//释放设备上下文

bmp.DeleteObject();//发行位图对象

}


免责声明:文章转载自《BitBlt介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇中文分词系列(一) 双数组Tire树(DART)详解JAVA8 Stream下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

canvas中文字和图片的绘制

绘制文字 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>canvas</title> <style> .canvas{border:1px...

wxpython 基本的控件 (按钮)

使用按钮工作 在wxPython 中有很多不同类型的按钮。这一节,我们将讨论文本按钮、位图按钮、开关按钮(toggle buttons )和通用(generic )按钮。   如何生成一个按钮? 在第一部分(part 1)中,我们已经说明了几个按钮的例子,所以这里我们只简短的涉及它的一些基本的东西。图7.4显示了一个简单的按钮。   图7.4 使用按钮...

kubernetes配置(kubeconfig)对多集群的访问

配置对多集群的访问 本文展示如何使用配置文件来配置对多个集群的访问。 在将集群、用户和上下文定义在一个或多个配置文件中之后,用户可以使用kubectl config use-context命令快速地在集群之间进行切换。 注意:用于配置集群访问的文件有时被称为kubeconfig 文件。 这是一种引用配置文件的通用方式,并不意味着存在一个名为kubecon...

【转】数据结构:位图法

一、定义 位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。在STL中有一个bitset容器,其实就是位图法 二、数据结构unsigned int bit[N]; 在这个数组里面,可以存储 N * sizeof(int)个数据,但是最大的数只能是N...

MFC画刷类CBrush使用实例 .

画刷类CBrush利用画笔可以画图形的边框,而用画刷就可以在图形内着色。大多数的GDI绘图函数既使用画笔又使用画刷,它们用画笔绘制各种图形的周边,而用画刷填充图形,因而可以用一种颜色和风格去设置画笔,而用另一种颜色和风格去设定画刷,通过一次函数调用就可以绘制出形状复杂的图形。画刷是由CBrush类管理的,创建画刷有两种方法:一种是调用构造函数,另一种是调用...

RTEMS 进程切换分析(基于i386体系)

在支持多任务操作系统中,进程切换是不可避免的,以使进程能在单个CPU上并发执行。进程的调度涉及到的东西较多,例如调度的时机、调度的策略等等,在这里我们只讨论RTEMS任务调度中进程切换的细节,通过分析以明白操作系统如何做到使一个CPU的使用权如何从一个任务上切换到另一个任务。 下面假设两个任务TASK1和TASK2,当前正在执行的任务executing =...