【Visual C++】绘图函数BitBlt的使用方法
BitBlt
该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。
原型:
BOOL BitBlt(
HDC hdcDest,
int nXDest, int nYDest, int nWidth, int nHeight,
HDC hdcSrc,
int nXSrc, int nYSrc,
DWORD dwRop);
参数:
hdcDest:指向目标设备环境的句柄。
nXDest、nYDest:指定目标矩形区域左上角的X轴和Y轴逻辑坐标
nWidth、nHeight:指定源和目标矩形区域的逻辑宽度和逻辑高度。
hdcSrc:指向源设备环境的句柄。
nXSrc、nYSrc:指定源矩形区域左上角的X轴和Y轴逻辑坐标。
dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。下面列出了一些常见的光栅操作代码:
|
值 |
描述 |
|
BLACKNESS |
表示使用与物理调色板的索引0相关的色彩来填充目标矩形区域,(对缺省的物理调色板而言,该颜色为黑色)。 |
|
DSTINVERT |
表示使目标矩形区域颜色取反。 |
|
MERGECOPY |
表示使用布尔型AND(与)操作符将源矩形区域的颜色与特定模式组合一起。 |
|
MERGEPAINT |
通过使用布尔型OR(或)操作符将源矩形区域的颜色取反后与目标矩形区域的颜色合并。 |
|
NOTSRCCOPY |
将源矩形区域颜色取反,拷贝到目标矩形区域。 |
|
NOTSRCERASE |
使用布尔类型的OR(或)操作符组合源和目标矩形区域的颜色值,然后将合成的颜色取反。 |
|
PATCOPY |
将特定的模式拷贝到目标位图上。 |
|
PATINVERT |
通过使用布尔型XOR(异或)操作符将源和目标矩形区域内的颜色合并。 |
|
PATPAINT |
通过使用布尔型OR(或)操作符将源矩形区域取反后的颜色值与特定模式的颜色合并。然后使用OR(或)操作符将该操作的结果与目标矩形区域内的颜色合并。 |
|
SRCAND |
通过使用布尔型AND(与)操作符来将源和目标矩形区域内的颜色合并。 |
|
SRCCOPY |
将源矩形区域直接拷贝到目标矩形区域。 |
|
SRCERASE |
通过使用布尔型AND(与)操作符将目标矩形区域颜色取反后与源矩形区域的颜色值合并。 |
|
SRCINVERT |
通过使用布尔型XOR(异或)操作符将源和目标矩形区域的颜色合并。 |
|
SRCPAINT |
通过使用布尔型OR(或)操作符将源和目标矩形区域的颜色合并。 |
|
WHITENESS |
使用与物理调色板中索引1有关的颜色填充目标矩形区域。(对于缺省物理调色板来说,这个颜色就是白色)。 |
完整的光栅操作(ROP)码,参见 Ternary Raster Operations.
返回值:
如果函数成功,那么返回值非零;如果函数失败,则返回值为零。调用GetLastError函数获取扩展错误信息。
说明:
如果在源设备环境中可以实行旋转或剪切变换,那么函数BitBlt返回一个错误。
如果存在其他变换(并且目标设备环境中匹配变换无效),那么目标设备环境中的矩形区域将在需要时进行拉伸、压缩或旋转。
如果源和目标设备环境的颜色格式不匹配,那么BitBlt函数将源场景的颜色格式转换成能与目标格式匹配的格式。
当正在记录一个增强型图元文件时,如果源设备环境标识为一个增强型图元文件设备环境,那么会出现错误。
并不是所有的设备都支持BitBlt函数。更多信息,调用GetDeviceCaps 函数,将第二个参数赋值为RC_BITBLT来查看设备是否支持。(For more information, see the RC_BITBLT raster capability entry in the GetDeviceCaps function, as well as the MaskBlt and StretchBlt functions. )
如果源和目标设备环境代表不同的设备,那么BitBlt函数返回错误。
更多关于从右到左向位块传输显示信息(For information about blitting to displays with right-to-left orientations),参见 Creating Bitmaps。
在Windows CE 1.0和1.01版中,参数dwRop只可以指定为下列值:SRCCOPY、SRCAND、SRCPAINT、SRCINVERT。在Windows CE 2.0及以后版中,参数dwRop可以是任何ROP3代码值。
下面是MSDN上的例子:
HDC hdcSrc = CreateCompatibleDC(NULL);
HDC hdcDst = CreateCompatibleDC(NULL);
HBITMAP hbmOld, hbmOld2, hbmNew;
BITMAP bm;
GetObject(hbm, sizeof(bm), &bm);
hbmOld = SelectObject(hdcSrc, hbm);
hbmNew = CreateBitmap( bm.bmWidth, bm.bmHeight, bm.bmPlanes,
bm.bmBitsPixel,
NULL);
hbmOld2 = SelectObject(hdcDst, hbmNew);
BitBlt(hdcDst, 0, 0, bm.bmWidth, bm.bmHeight, hdcSrc, 0, 0, SRCCOPY);
SelectObject(hdcSrc, hbmOld);
SelectObject(hdcDst, hbmOld2);
DeleteDC(hdcSrc);
DeleteDC(hdcDst);
return hbmNew;
}
【Visual C++】绘图函数BitBlt的使用方法的更多相关文章
- R语言——基本绘图函数
通过一个综合的例子测试绘图函数 学习的内容是tigerfish老师的教程. 第一节:基本知识 用seq函数产生100位学生的学号. > num = seq(,) > num [] [] [ ...
- 《MATLAB从入门到放弃》二维曲线和图形绘制基础(二):使用Help文档学习line、plot、plotyy、subplot、hold绘图函数
目录: » plot 最常用的二维曲线绘图函数 > 帮助文档 > 基本使用语法 > 线条的样式.符号和颜色调整 > 图形属性调整 > 使用图形句柄进行设置 » ...
- VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)
上一节中鸡啄米讲了文本输出的知识,本节的主要内容是CDC类及其屏幕绘图函数. CDC类简介 CDC类是一个设备上下文类. CDC类提供了用来处理显示器或打印机等设备上下文的成员函数,还有处理与窗口客户 ...
- 科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数)
Mlab了解 Mlab是Mayavi提供的面向脚本的api,他可以实现快速的三维可视化,Mayavi可以通过Mlab的绘图函数对Numpy数组建立可视化. 过程为: .建立数据源 .使用Filter( ...
- 数据分析与展示---Matplotlib基本绘图函数
一:基本绘图函数(这里介绍16个,还有许多其他的) 二:pyplot饼图plt.pie的绘制 三:pyplot直方图plt.hist的绘制 (一)修改第二个参数bins:代表直方图的个数,均分为多段, ...
- VS2010-MFC(图形图像:CDC类及其屏幕绘图函数)
转自:http://www.jizhuomi.com/software/244.html 上一节讲了文本输出的知识,本节的主要内容是CDC类及其屏幕绘图函数. CDC类简介 CDC类是一个设备上下文类 ...
- ES5——函数,对象,方法,this
JS由表达式和语句组成 表达式:计算出一个值,但并不进行任何操作,不改变计算机运行状态 语句:包括 声明语句,赋值语句,控制结构 函数,对象,方法,this 数组和对象:是两个非常重要的数据类型 函数 ...
- Matlab绘图函数一览
要查看Matlab所有绘图函数,请从Matlab主界面菜单查看“绘图目录”,或从Matlab帮助文档查看“Types of MATLAB Plots”(在线版本).本文的图和英文解释摘自Matlab帮 ...
- ThinkPHP3.2 G函数代码及 使用方法
ThinkPHP3.2 G函数代码及 使用方法 代码: // 内存是否可调用 define('MEMORY_LIMIT_ON',function_exists('memory_get_usage')) ...
随机推荐
- assert使用
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h> void assert( i ...
- 在 Windows 下远程桌面连接 Linux - VNC 篇
VNC是由AT&T试验室开发,是一款优秀的远程控制工具软件,后来以GPL授权的形式开源.经过几年的发展,现在的VNC已经不单指某个软件,而是一类软件的通称.下面介绍Linux下常用的两个VNC ...
- 零成本建立的.NET小组开发平台
前言 说道.NET开发平台,首先想到的就是Visual Studio,建立.NET小组开发平台自然首推TFS.但其花费却也是相当昂贵的(当然在本国可以无视这些成本),近期的开发中接触到一些开源软件并读 ...
- [转]Permission denied: /.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
原文链接:http://blog.csdn.net/dyw/article/details/6612497 近日,在Apache2环境下部署Rails3应用时碰到此错误: Permission den ...
- 在 Windows Azure 网站上使用 Django、Python 和 MySQL:创建博客应用程序
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 撰写. 根据您编写的应用程序,Windows Azure 网站上的基本Python 堆 ...
- 【Bootstrap3.0建站笔记一】表单元素排版
1.文字和输入框前后排列: 代码: <div class="row"> <div class="col-lg-12"> <div ...
- 微信或手机浏览器在线显示office文件(已測试ios、android)
近期开发微信企业号,发现微信andriod版内置浏览器在打开文件方面有问题,可是ios版没有问题.原因是ios版使用的是safari浏览器 支持文档直接打开.可是andriod版使用的是腾讯浏览器x5 ...
- android apk打包之后js调用失效的解决办法
现在android下应用开发的界面用html5+css3写,交互用javascript和java沟通,但是用上混淆后发现javascript调用java类定义的方法老说找不到这个方法.一番折腾后发现是 ...
- 立贴读 《CLR》
弱弱的说,我要开始读<CLR>这本书了,怕自己不能坚持下来,特立贴监督自己,本来是大牛们涉及的区域,现在好朋友的鼓励下,勇敢的踏入,如有错误,还请各位指正.
- 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH
原文 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH 在项目中关于DataGrid的遇到过一些问题,其中是关于迁入CheckBox的双向 ...