StretchDIBits使用方法

StretchDIBits使用方法

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

转自:http://blog.csdn.net/giantchen547792075/article/details/6996011

StretchDIBits 函数把DIB、JPEG、PNG图像中一矩形区域内的像素颜色数据拷贝到指定的目标矩形里。假设目标矩形大于源矩形,此函数将拉伸的行和列以适合目标矩形的颜色数据。假设目标矩形小于源矩形,则此函数使用指定的光栅操作压缩的行和列。(Note:整幅图像都会被显示在一个矩形区域中,这个矩形区域不许显示原图全貌)

语法:
int StretchDIBits (HDC hdc,int XDest,YDest,int int nDestWidth,int nDestHeight,int XSrc,int YSrc,int nSrcWidth,int nSrcHeight,const VOID __in * lpBits,__in const BITMAPINFO * lpBitsInfo,__in UINT iUsage,__in dword = dwRop) ;
參数:
hdc [in]
(Note:不知道这[in]代表什么暂且觉得它并不重要吧)
目标设备上下文的句柄。
XDest [in]
角点的 x 坐标,以逻辑单位的目标矩形的左上角。
YDest [in]
Y 坐标,逻辑单位上的目标矩形的左上角。
nDestWidth [in]
逻辑单位,目标矩形的宽度。
nDestHeight [in]
逻辑单位,目标矩形的高度。
XSrc [in]
角的 x 坐标,以像素为单位,源矩形图像中。
YSrc [in]
Y 坐标,以像素为单位,源矩形图像中。
nSrcWidth [in]
宽度,以像素为单位,源矩形图像中。
nSrcHeight [in]
高度以像素为单位,源矩形图像中。
lpBits [in]
图像的位,作为字节数组存储的指针。有关具体信息,请參见备注部分。
lpBitsInfo [in]
指向包括DIB 相关信息的 BITMAPINFO 结构的指针。
iUsage [in]
指定是否提供的 BITMAPINFO 结构的 bmiColors 成员,以及若然,是否 bmiColors 包括显式的红、 绿、 蓝 (RGB) 值或索引。IUsage 參数必须是下列值之中的一个。
 
 
备注
DIB_RGB_COLORS
颜色表中包括文本的 RGB 值。
DIB_PAL_COLORS
该数组包括到源设备上下文的逻辑调色板的 16 位索引。

 

dwRop [in]
指定的方式组合在一起以形成新的图像源像素、 目标设备上下文的当前画刷和目标像素。有关具体信息,请參阅以下的备注部分。
返回值

假设函数成功,则返回值是扫描复制的行数。请注意,此值能够为负的镜像内容。

假设该函数失败,或者没有扫描行被复制,则返回值为 0。

假设驱动程序不支持 JPEG 或 PNG 文件图像传递给 StretchDIBits,该函数将失败并返回 GDI_ERROR。假设发生问题,应用程序必须依靠自己的 JPEG 或 PNG 支持,将图像的解压缩成位图,然后将该位图传递给 StretchDIBits。

 

备注
自底向上 DIB 的起始位置是左下角 ;自上而下 DIB 的起始位置是左上角。
 
StretchDIBits 创建一个位图镜的像图像,假设nSrcWidth 和 nDestWidth 这两个參数或 nSrcHeight 和 nDestHeight这两个參数的符号不同。NSrcWidth 和 nDestWidth 的符号不同,那么该函数创建一个沿 x 轴镜像的位图图像。NSrcHeight 和 nDestHeight 的符号不同,那么该函数创建沿 y 轴镜像的位图图像。
 
此函数同意 JPEG 或 PNG 图像作为源图像传入。每一个參数怎样使用仍保持不变,除非:
  • 假设 BITMAPINFOHEADER 的 biCompression 成员是 BI_JPEG 或 BI_PNG,lpBits 指向包括 JPEG 或 PNG 图像单独的缓冲区。BITMAPINFOHEADER 结构的 biSizeImage 成员指定缓冲区的大小。IUsage 參数不得不被设置为 DIB_RGB_COLORS。DwRop 參数不得不被设置为 SRCCOPY。
  • 为确保打印时有适当的图元文件缓存池,在调用 StretchDIBits 之前,应用程序必须调用 CHECKJPEGFORMAT 或 CHECKPNGFORMAT 转义以验证打印机可分别识别 JPEG 或 PNG 图像。
ICM: 假设通过使用 SetICMMode 的iEnableICM 參数设置为 ICM_ON的调用启用了色彩管理,那么颜色管理就会运行。假设由 lpBitsInfo 指定的位图有一指定伽马和成员终结点成员的BITMAPV4HEADER结构或一个指定 profileData 和 profileSize 的成员或伽马和成员终点结成员的 BITMAPV5HEADER 然后该位图的全部像素将被视为表达在由这些成员所述的色彩空间种而不是设备上下文的源颜色空间中。

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

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

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


相关推荐

  • MySQL允许root远程登录[通俗易懂]

    MySQL允许root远程登录[通俗易懂]新安装的数据库只能localhost访问??是不是很苦逼下面介绍如何允许远程访问root1.“试一下”能否远程登录>mysql-uroot-p-h10.0.42.180答案是否定的。那就开始进行设置吧2.登录数据库,默认本地访问>mysql-uroot-p3.切换mysql数据库mysql>usem…

    2022年6月17日
    33
  • 零基础学Java(2)数据类型与变量

    零基础学Java(2)数据类型与变量前言Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共8种基本类型,其中有4种整型、2种浮点型、1种字符串类型char(用于表示Unicode编码的代码单元)和1种

    2022年8月7日
    5
  • [Elasticsearch]如何通过python操作ES数据库 pythonElasticsearch入门

    [Elasticsearch]如何通过python操作ES数据库 pythonElasticsearch入门[Elasticsearch]如何通过python操作ES数据库pythonElasticsearchElasticsearch基本介绍Elasticsearch入门安装与启动python操作ES数据库连接ES数据库无用户名密码状态有密码创建索引(ES中的索引即数据库)插入数据单条数据多条数据查询数据查询结果返回参数各字段含义最直接的查询方法用body指定条件模糊查询term精确查询multi_match,多字段查询prefix,前缀查询wildcard,通配符查询regexp,正则匹配bool,多条

    2022年5月8日
    313
  • java 激活码【最新永久激活】

    (java 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1PA3AFINM4-eyJsa…

    2022年3月31日
    78
  • python 获取时间戳_python十个实例

    python 获取时间戳_python十个实例1、获取秒级时间戳与毫秒级时间戳、微秒级时间戳importtimeimportdatetimet=time.time()print(t)#原始时间数据print(int(t))#秒级时间戳print(int(round(t*1000)))#毫秒级时间戳print(int(round(t*1000000)))#微秒级时间戳返回1…

    2022年10月2日
    6
  • docker(11)Dockerfile 中的COPY与ADD 命令[通俗易懂]

    docker(11)Dockerfile 中的COPY与ADD 命令[通俗易懂]前言Dockerfile中提供了两个非常相似的命令COPY和ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。Build上下文的概念在使用dock

    2022年7月31日
    9

发表回复

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

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