StretchDIBits用法

StretchDIBits用法转自:http://blog.csdn.net/giantchen547792075/article/details/6996011StretchDIBits函数把DIB、JPEG、PNG图像中一矩形区域内的像素颜色数据复制到指定的目标矩形里。如果目标矩形大于源矩形,此函数将拉伸的行和列以适合目标矩形的颜色数据。如果目标矩形小于源矩形,则此函数使用指定的光栅操作压缩的行和列。(Note:整幅图像…

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

转自: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/147513.html原文链接:https://javaforall.net

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

相关推荐

  • DirectSound的应用

    DirectSound的应用

    2021年12月14日
  • 将链接地址转换为二维码并且复制文字_二维码怎么转换成链接

    将链接地址转换为二维码并且复制文字_二维码怎么转换成链接前言:我的需求是讲链接地址转换成二维码,供用户去使用并展示H5端,这里会说到一些小细节,先上代码吧~1.html结构2.生成二维码3.复制二维码要注意的一点是:首先二维码的密度是根据参数的多少来显示的,参数如果特别多,就会导致二维码密度太密,用户拿手机是扫不出来的.解决方案:1.要后端或者自己写一个接口专门放这些地址,可以理解成压缩.然后拿到压缩的东西再去转码.2.把在另外一端能获取到的参数,通过方式获取到,在转码的时候尽量减少参数的携带,带上必要..

    2022年9月6日
  • idea 2022.01激活(JetBrains全家桶)2022.01.28

    (idea 2022.01激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~GTRP…

    2022年3月31日
  • c++ findwindow函数_matlab中怎么查找函数的用法

    c++ findwindow函数_matlab中怎么查找函数的用法FindWindow用来根据类名和窗口名来得到窗口句柄的。但是这个函数不能查找子窗口,也不区分大小写。如果要从一个窗口的子窗口中查找需要使用FindWindowEX。 函数功能:该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。   函数原型:HWNDFindWindowEx

    2022年8月13日
  • linux 切换内核版本,切换 Linux 内核版本[通俗易懂]

    linux 切换内核版本,切换 Linux 内核版本[通俗易懂]Linux内核是开源类Unix系统宏内核。仅仅一个内核并不是一套完整的操作系统。有一套基于Linux内核的完整操作系统叫作Linux操作系统。Kernel是Linux系统的核心,主要负责硬件的支持。Linux内核提供了安全补丁,bugfix和新特性。Linux内核在GNU通用公共许可证第2版之下发布。Linux的Kernel主要提供以下五个基本的功能硬件管…

    2022年8月23日
  • java 取余运算

    java 取余运算取余运算符是“%”它是一个双目运算符,它的操作数通常是正整数也可以书负数甚至是浮点数,如果负数参与此运算,则需要特别注意,对于整数,java的取余运算规则如下a%b=a-(a/b)*b例如5%3=5-(5/3)*3=25%-3=5-(5/-3)*-3=2-5%3=-5-(-5/3)*3=-2-5%-3=-5-(-5/-3)*-3=-2如果操作数中有浮点数则采用的规则为…

    2022年6月14日

发表回复

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

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