BitBlt介绍
设备上下文画图有非常多种方法。比如通过创建位图画刷,利用其填充一个区域来实现图像的绘制。此外,还能够使用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介绍的更多相关文章
- 【MFC】CDC::BitBlt介绍
CDC::BitBlt介绍 2011-11-04 08:25 19576人阅读 评论(6) 收藏 举报 摘自: http://blog.csdn.net/bberdong/article/detail ...
- MFC绘图相关GDI工具对象和函数介绍
在利用MFC进行界面编程时,除了需要熟悉各种类型控件的操作外,还会经常遇到图形绘制和显示的问题,比如时频分析界面.图像处理界面等.处理这些软件界面开发问题时,不可避免地需要用到一系列GDI工具对象和相 ...
- 【ARM-Linux开发】【DSP开发】AM5728介绍
AM5728 Sitara Processors 1. 介绍 1.1 AM572x概述 AM572x是高性能,Sitara器件.以28nm技术集成: 结构设计主要考虑嵌入式应用,包括工业通讯,人 ...
- CDC类介绍
CDC类 中文介绍 CDC类定义的是设备上下文对象的类. CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员. 通过CDC对象的成员函数进行所有的绘图. ...
- CSS3 background-image背景图片相关介绍
这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- Windows Server 2012 NIC Teaming介绍及注意事项
Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
随机推荐
- [转]Delphi 关键字详解
全文链接地址:http://www.cnblogs.com/del/archive/2008/06/23/1228562.html
- 监听器启动顺序和java常见注解
- RemoteWebDriver使用说明
1. 本地代码使用RemoteWebDriver启动: public class Testing { public void myTest()throws Exception { WebDriver ...
- ul ol 列表的样式的控制
ul( Unordered List)无序列表 ol(Ordered List)有序列表 列表的样式: 列表原有符号.自定义图形符号.符号显示位置. 1.列表符号 是显示于每一个列表项目前的符号标识. ...
- 深入Java虚拟机读书笔记第二章平台无关性
Java的体系结构对平台无关的支持 Java平台 Java的体系结构通过几种途径支持Java程序的平台无关性,其中主要是通过Java平台自己.Java平台扮演一个运行时Java程序与其下的硬件和操作系 ...
- Yii2的相关学习记录,后台模板和gii(三)
前面已经可以正常登录,但我们需要体验下最常用的增删查改的操作.这里就需要gii,通过gii可以方便的生成表单.表格的框架,不需要我们再写重复的东西. gii访问地址:http://localhost/ ...
- Python新手学习基础之数据结构-序列1
序列概念 序列,顾名思义就是有顺序的列,在Python里序列类型的数据结构包括字符串,列表和元组.既然都是序列类型,说明他们有很多共通点,他们的每一个元素都可以通过指定的偏移量方式(索引操作)来获得, ...
- DNS递归和迭代原理
11.3.7 DNS递归解析原理 “递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式.在这种解析方式中,如果客户端配置的本地名称服务器不能解析的话,则后面的查询全由本地名称 ...
- 一、UITableView的属性
一.UITableView的属性 NSIndexPath类型是用来获取用户选择的indexPath,在别的函数里面,若需要知道用户选择了哪个cell,用上它可以省事很多.不必再去建全局变量sectio ...
- 谈谈依赖注入DI
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注入 ...