MaskBlt 

该函数使用特定的掩码和光栅操作来对源和目标位图的颜色数据进行组合。

原型:

BOOL MaskBlt(

HDC  hdcDest,

int  nXDest,  int  nYDest,  int  nWidth,  int  nHeight,

HDC hdcSrc,

int  nXSrc,  int  nYSrc,

HBITMAP hbmMask,

int  xMask, int  yMask,

DWORD  dwRop);

参数:

hdcDest:指向目标设备环境的句柄。

nXDest、nYDest:指定目标矩形左上角的逻辑X、Y坐标。

nWidth、nHeight:指定目标矩形和源位图的宽度、高度,按逻辑单位。

hdcSrc:指向源位图所在的设备环境,如果dwRop参数规定的光栅操作不包括源位图,那么该参数必须为0。

nXSrc、nYSrc:指定源位图左上角的逻辑X、Y坐标。

nbmMask:指向单色掩码位图的句柄,该位图与源设备环境中的彩色位图进行组合。

xMask、yMask:指定由参数hbmMask指向的掩码位图的水平、垂直像素偏移量。

dwRop:指定前景和背景光栅操作码,函数使用这些操作码为控制源和目标数据的组合。背景光栅操作码存储在该参数值的高位字中的高位字节中,而前景光栅操作代码雄在该参数值的高位字中的低位字节中,而低位字则忽略,并且应该为0。宏MAKEROP4创建前景和背景光栅操作码这样的组合。

有关该函数场景中的前景和背景方面的讨论,可参考下面的备注说明。

至于有关公用的光栅操作码清单,可参考BitBlt函数。

Windows CE 1.0 and 1.01 只支持 SRCCOPY and SRCINVERT 光栅操作。

返回值:

如果函数执行成功,那么返回值为非零,如果函数失败,那么返回值为0。获得更多错误信息,请调用GetLastError函数。

备注:

在由hbmMask指定的掩码中,数值1表示在那个位置应使用dwRop指定的前景光栅操作码。数值0表示应使用dwRop指定的背景光栅操作码。

如果光栅操作需要源对象,那么掩码矩形必须覆盖源矩形。如果没有覆盖,那么函数会执行失败。如果光栅操作没有要求源对象,那么掩码矩形必须覆盖目标矩形,如果没有覆盖,那么函数会失败。

如果在调用函数时,源设备环境中实行旋转或剪切变换,那么会出现错误。然而,允许有其他类型的变换。

如果源位图的颜色格式、模式和目标位图不一样,那么该函数对模式或源位图格式,或者两者进行转换,以与目标格式匹配。

如果掩码位图不是单色位图,则会出现错误。

当正在记录的是增强型图元文件时,如果源设备环境标识为增强型图元文件设备环境,那么会出现错误(该函数返回FALSE)。

不是所有设备都支持MaskBlt函数,应用程序应调用GETDeviceCaps函数来确定设备是否支持该函数。

如果没有提供掩码位图,那么该函数非常类似BitBlt,它使用前景光栅操作码。

MaskBlt 拷贝非矩形区域图象的更多相关文章

  1. Win32 GDI 非矩形区域剪裁,双缓冲技术

    传统的Win32通过GDI提供图形显示的功能,包括了基本的绘图功能,如画线.方块.椭圆等等,高级功能包括了多边形和Bezier的绘制.这样app就不用关心那些图形学的细节了,有点类似于UNIX上的X- ...

  2. QT窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透

    qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透 窗口置顶qt 里是 setWindowFlags(Qt::WindowStaysOnTopHint)kde 里 ...

  3. 【代码笔记】iOS-根据size截取屏幕中间矩形区域

    代码: RootViewController.m #import "RootViewController.h" @interface RootViewController () @ ...

  4. jquery点击非div区域隐藏div

    点击非div区域隐藏div,如图,点击圆的头像(.person-msg)弹出白色底框(.person-centre).点击圆头像以外的区域隐藏白色底框

  5. [Swift]LeetCode363. 矩形区域不超过 K 的最大数值和 | Max Sum of Rectangle No Larger Than K

    Given a non-empty 2D matrix matrix and an integer k, find the max sum of a rectangle in the matrix s ...

  6. LeetCode:矩形区域【223】

    LeetCode:矩形区域[223] 题目描述 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. 示例: 输入: -3, 0, 3, 4, ...

  7. Leetcode 363.矩形区域不超过k的最大数值和

    矩形区域不超过k的最大数值和 给定一个非空二维矩阵 matrix 和一个整数 k,找到这个矩阵内部不大于 k 的最大矩形和. 示例: 输入: matrix = [[1,0,1],[0,-2,3]], ...

  8. 363. 矩形区域不超过 K 的最大数值和(利用前缀和转化为最大子序和问题)

    题目: 链接:https://leetcode-cn.com/problems/max-sum-of-rectangle-no-larger-than-k/ 给定一个非空二维矩阵 matrix 和一个 ...

  9. Java实现 LeetCode 363 矩形区域不超过 K 的最大数值和

    363. 矩形区域不超过 K 的最大数值和 给定一个非空二维矩阵 matrix 和一个整数 k,找到这个矩阵内部不大于 k 的最大矩形和. 示例: 输入: matrix = [[1,0,1],[0,- ...

随机推荐

  1. Cortex_M3——存储器系统学习笔记

    看完一个章节完全不做学习笔记总结并进行知识转换,看了就会忘记啊~无奈脸. 一.CORTEX_M3总线一览 二.异常 编号为1-15的对应系统异常,大于等于16的则全是外部中断. 系统异常清单如下所示: ...

  2. SPOJ COMPANYS Two Famous Companies 最小生成树,二分,思路 难度:2

    http://www.spoj.com/problems/COMPANYS/en/ 题目要求恰好有k条0类边的最小生成树 每次给0类边的权值加或减某个值delta,直到最小生成树上恰好有k条边为0,此 ...

  3. Centos系统更改yum源为163

    Centos安装好之后,按照网上教程对yum源进行修改,但更新之后发现总是提示更新失败,到163网站上查找资源发现目前大部分网上的教程都写错地址了,呵呵 下面是正确的办法,请参考 1.进入存放源配置的 ...

  4. L177 Arctic ice brings an understanding of ancient Europe’s economy

    Greenland's icy mountains are not an obvious place to search for an archive of economic history, but ...

  5. IE 问题集合

    1.zIndex在ie需要 先对比父级的层级

  6. 取出表A中第31到第40记录

    方法一: select top 10 * from A where RowId not in (select top 10 RowId from A) 方法二(使用临时表): with tempTab ...

  7. Python数据类型-01.数字和布尔值

    本节主要介绍Python中的基础知识中的数据类型,数字和布尔值 介绍几个知识点:1)内置函数print()的用法,直接打印括号里面的内容,或者print后跟多个输出,以逗号分隔.2)内置函数type( ...

  8. ubuntu16.04 源码安装Python3.7 (可以在此基础上安装Tensorflow) (确保Tensorflow计算框架与系统的彻底隔离)

    Python3.7 源码下载: https://www.python.org/downloads/release/python-370/ 解压源码: tar -zxvf Python-3.7.0.tg ...

  9. 浅谈一致性Hash原理及应用

    在讲一致性Hash之前我们先来讨论一个问题. 问题:现在有亿级用户,每日产生千万级订单,如何将订单进行分片分表? 小A:我们可以按照手机号的尾数进行分片,同一个尾数的手机号写入同一片/同一表中. 大佬 ...

  10. JavaBean和Map的相互转换

    JavaBean和Map的相互转换 一.JavaBean 1.什么是JavaBean? JavaBean其实就是一种遵循特定写法的类,必须遵循一定的规范: 类必须由public修饰,并且保证有公共的无 ...