Bitblt函数(API)详解[通俗易懂]

Bitblt函数(API)详解[通俗易懂]Bitblt作用将某一内存块的数据传送到另一内存块,前一内存块被称为"源",后一内存块被称为"目标"图象程序开发者使用Blit的函数在内存中将某页面上的一幅位图

大家好,又见面了,我是你们的朋友全栈君。

Bitblt作用将某一内存块的数据传送到另一内存块,前一内存块被称为”源”,后一内存块被称为”目标”图象程序开发者使用Blit的函数在内存中将某页面上的一幅位图经过一定的变换转移到另一个页面上
原形说明:
Declare Function BitBlt Lib “gdi32” Alias “BitBlt”(ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
hDestDC As Long, //目标设备环境的句柄
x As Long, //目标设备环境的矩形区域的左上角的x坐标
y As Long, //目标设备环境的矩形区域的左上角的y坐标
nWidth As Long, //目标设备环境的矩形区域的宽度值
nHeight As Long, //目标设备环境的矩形区域的高度值
hSrcDC As Long, //源设备环境的句柄
xSrc As Long, //源设备环境的矩形区域的左上角的x坐标
ySrc As Long, //源设备环境的矩形区域的左上角的y坐标
dwRop As Long, //光栅操作符
dwRop参数是光栅操作代码(Rop),它是指源位图与目标位图以及图案刷的颜色值进行布尔运算的方式,以下列出了常用的光栅操作码及含义
BLACKNESS 用黑色填充目标矩形区域.
DSTINVERT 将目标矩形图象进行反相.
MERGECOPY 将源矩形图象与指定的图案刷(Pattern)进行布尔”与”运算.
MERGEPAINT 将源矩形图形经过反相后,与目标矩形图象进行布尔”或”运算.
NOTSRCCOPY 将源矩形图象经过反相后,复制到目标矩形上.
NOTSRCERASE 先将源矩形图象与目标矩形图象进行布尔”或”运算,然后再将得图象进行反相.
PATCOPY 将指定的图案刷复制到目标矩形上.
PATINVERT 将指定的图案刷与目标矩形图象进行布尔”异或”运算.
PATPAINT 先将源矩形图象进行反相,与指定的图案刷进行布尔”或”运算,再与目标矩形图象进行布尔”或”运算SRCAND 将源矩形图象与目标矩形图象进行布尔”与”运算.
SRCCOPY 将源矩形图象直接复制到目标矩形上.
SRCERASE 将目标矩形图象进行反相,再与源矩形图象进行布尔”与”运算.
SRCINVERT 将源矩形图象与目标矩形图象进行布尔”异或”运算.
SRCPAINT 将源矩形图象与目标矩形图象进行布尔”或”运算.
WHITENESS 用白色填充目标矩形区域.

Bitblt函数(API)详解[通俗易懂]
Bitblt函数(API)详解[通俗易懂]
代码

[DllImport(“gdi32.dll”)]
public static extern bool BitBlt(
IntPtr hwndObject, int nXDest, int nYDest, int nWidth,
int nHeight, IntPtr hwndObjSource, int nXSrc, int nYSrc,
int dwRop);

public enum TernaryRasterOperations

{

SRCCOPY = 0x00CC0020, /* dest = source*/
SRCPAINT = 0x00EE0086, /* dest = source OR dest*/
SRCAND = 0x008800C6, /* dest = source AND dest*/
SRCINVERT = 0x00660046, /* dest = source XOR dest*/
SRCERASE = 0x00440328, /* dest = source AND (NOT dest )*/
NOTSRCCOPY = 0x00330008, /* dest = (NOT source)*/
NOTSRCERASE = 0x001100A6, /* dest = (NOT src) AND (NOT dest) */
MERGECOPY = 0x00C000CA, /* dest = (source AND pattern)*/
MERGEPAINT = 0x00BB0226, /* dest = (NOT source) OR dest*/
PATCOPY = 0x00F00021, /* dest = pattern*/
PATPAINT = 0x00FB0A09, /* dest = DPSnoo*/
PATINVERT = 0x005A0049, /* dest = pattern XOR dest*/
DSTINVERT = 0x00550009, /* dest = (NOT dest)*/
BLACKNESS = 0x00000042, /* dest = BLACK*/
WHITENESS = 0x00FF0062, /* dest = WHITE*/

}

 

转载:http://blog.csdn.net/maconel/archive/2004/07/12/39384.aspx

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155433.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python lambda表达式_python表达式是什么

    python lambda表达式_python表达式是什么Lambda表达式lambda表示的是匿名函数,不需要用def来声明,一句话就可以声明出一个函数语法函数名=lambda参数:返回值注意点1.函数的参数可以有多个,多个参数之间用逗号隔

    2022年8月6日
    6
  • python 学习记录一

    python 学习记录一

    2022年3月12日
    34
  • python2与python3中input的区别

    python2与python3中input的区别python2与python3的区别:1、input:python2中input需要用户指定输入的类型,以下代码体现了这点2、python2中的raw_input与python3中的input

    2022年7月6日
    19
  • 等价类划分法-案例剖析-设计测试用例「建议收藏」

    等价类划分法-案例剖析-设计测试用例「建议收藏」目录等价类划分法概念有效等价类和无效等价类等价类设计测试用例步骤案例1案例2案例3等价类划分法概念等价类划分法是把所有可能的输入数据,即程序的输入数据集合划分成若干个子集即等价类,然后从每个等价类中选取少量具有代表性的数据作为测试用例。有效等价类和无效等价类有效等价类:只完全满足产品规则说明的输入数据,即有效的、有意义的输入数据的集合。利用有效等价类可以检验程序是否满足规则说明所规定的功能性要求。无效等价类:不满足程序输入要求或者无效的…

    2022年10月10日
    0
  • Ubuntu 安装rabbitvcs

    Ubuntu 安装rabbitvcssudoadd-apt-repositoryppa:rabbitvcs/ppa#会提示确认,直接按回车键sudoapt-getupdatesudoapt-getinstallrabbitvcs-corerabbitvcs-clirabbitvcs-thunarthunarx-pythonsudoapt-getinstallrabbitvcs-geditsud

    2022年7月18日
    13
  • oracle笛卡尔积「建议收藏」

    oracle笛卡尔积「建议收藏」笛卡尔积定义:多张表相乘,简单的说就是两个集合相乘的积。(列数相加,行数相乘)先建了两张表,课程表:信息表:1.内连接innerjoinon 内连接:笛卡尔积中,只显示有关联的数据,无关联不显示。select*fromlefttable左表,righttable右表where左表.主键=右表.外键;select*fromlefttable左表innerjoin右表…

    2022年7月11日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号