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. openfalcon源码分析之graph

    openfalcon源码分析之graph 本节内容 graph功能 graph源码分析 2.1 graph中重要的数据结构 2.2 graph的简要流程图 2.3 graph处理数据过程 2.4 gr ...

  2. New Concept English Two 11 28

    $课文26 最佳艺术评论家 256. I am an art student and I paint a lot of pictures. 我是个学艺术的学生,画了很多画. 257. Many peo ...

  3. java并发编程之二--CountDownLatch的使用

    CountDownLatch类 允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助. CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行.使用一个 ...

  4. DesignPattern(四)结构型模式(下)

    上篇链接  https://www.cnblogs.com/qixinbo/p/9023764.html 继续介绍最后三种结构型模式 外观模式 外观模式,也称作 ”门面“模式,在系统中,客户端经常需要 ...

  5. ambassador 学习七 Mapping说明

    mapping 通过rest 资源与k8s 的service进行关联,ambassador 必须有一个或者多个提供访问servide 的mapping定义 mapping 可以包含的配置 rewrit ...

  6. 微信跳一跳,Python辅助自动跳程序

    一.说明 此代码借鉴一位大神提供在gitHub上的源码,已经做了简化合并处理,成功连上手机并运行后,可实现自动玩微信跳一跳游戏,刷个1000+的分数轻轻松松 github源码地址 https://gi ...

  7. AHK按键转载

    AHK按键一个顶三个 需求: 我想要,用win键代替3个键,代替了之后, 以后用win+任意键,例如: 就是win+1就是ctrl+alt+shift+1 其中1是可以变的. 解决:考虑到win键比较 ...

  8. Django 组件-分页器

    Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...

  9. java之序列化与反序列化

    1.这里主要是介绍Protobuf提供的序列化与反序列化的高效性.相对于传统的java提供的序列化来说,Protobuf的效率提高了很多倍.但是也有不足的地方,就是proto在对象序列化的时候抛弃了很 ...

  10. hihocoder-1080题解

    一.题目链接 http://hihocoder.com/problemset/problem/1080 二.题意 一维区间,需要做区间增加和区间置值,以及对整个区间求和. 三.思路 显然线段树是个利器 ...