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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++ mysql connector使用方法「建议收藏」

    C++ mysql connector使用方法「建议收藏」mysqlconnector的下载  C++操作mysql数据库可以用原生的api,也可以用mysqlconnector,在mysql下载页可以找到下载入口https://dev.mysql.com/downloads/,如下图:在vs2019中的配置头文件  Conneector的使用方式和常规sdk一样,包含头文件,静态库,动态库即可。注意Conneector在8.0之后需要boost支持,在vs中需要配置boost的路径,如下:lib路径  在附加依赖项添加静态库名

    2022年7月15日
    27
  • gateway 网关_小米多功能网关联不上

    gateway 网关_小米多功能网关联不上zuul1.x系列作为网关,基于servlet实现,属于多线程同步阻塞模型;zuul2.x改写netty,属于异步非阻塞模型;gateway属于异步非阻塞模型。这里基于spring-session+redis+zuulsession共享示例,将其中的zuul网关替换为gateway网关技术。工程改造pom依赖引入gateway依赖包<dependency><groupId>org.springframework.c

    2022年8月31日
    3
  • Jenkins使用教程

    Jenkins使用教程Jenkins是一款流行的开源持续集成(ContinuousIntegration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以CentOS7环境为例,总结了Jenkins的安装与配置、邮件功能使用,并接入阿里巴巴的著名开源项目fastjson,以此演示Java项目(SVN+Maven)中FindBugs/CheckStyle/PMD等常用插件的使用、单元…

    2022年5月15日
    31
  • 建立数据库的方法有哪些_数据库应用原则

    建立数据库的方法有哪些_数据库应用原则1:需求分析好后,找实体,不要有所落下2:分析实体里所要涉及到的属性(比如学生,在这个数据库里我需要他的学号,但不需要他的籍贯)3:分析属性的类型,长度。要想的长远点,比如学生名字的长度,汉族一般几位就够了,可万一来个维族,那几位长度就不够用了。4:实体间的关系,要满足需求和现实5:写出关系模式6:优化关系模式(越满足后面的范式越好)7:建数据库。属性,约束等最好字母+单词(正确的),

    2022年9月1日
    5
  • Jenkins安装_jenkins安装与配置

    Jenkins安装_jenkins安装与配置前言jenkins的环境搭建方法有很多,本篇使用docker快速搭建一个jenkins环境。环境准备:mac/Linuxdockerdocker拉去jenkins镜像先下载jenkins镜

    2022年7月29日
    7
  • mysql数据库批量插百万数据_sql数据库怎样批量添加数据

    mysql数据库批量插百万数据_sql数据库怎样批量添加数据DELIMITER$DROPPROCEDUREifEXISTSpro_batch_insert$CREATEPROCEDUREpro_batch_insert(INinsert_numINT)BEGINDECLAREiINTDEFAULT1;WHILEi<=insert_numDOINSERTINTOadmin(username,`password`)VALUES(CONCAT(‘Rose’,i),’666′);.

    2022年9月26日
    2

发表回复

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

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