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


相关推荐

  • Java实现数组反转的几种方法

    Java实现数组反转的几种方法Java实现数组反转的几种方法要求:首先创建一个长度是5的数组,并填充随机数。对这个数组实现反转效果方法一:/***方法一:使用临时数组*/@Testpublicvoidmethod1(){int[]array=newint[5];System.out.println(“【方法一】:…

    2022年5月3日
    91
  • python数组拼接字符串_Python练习题——数组拼接

    python数组拼接字符串_Python练习题——数组拼接##输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。##示例1:#输入:[10,2]#输出:”102″##示例2:#输入:[3,30,34,5,9]#输出:”3033459″##1#classSolution:#defminNumber(self,nums):#nums_str=[str(i)…

    2022年6月2日
    106
  • 猪脸识别!人工智能还能这么玩?

    猪脸识别!人工智能还能这么玩?黑马程序员视频库播妞微信号:heiniu526传智播客旗下互联网资讯、学习资源免费分享平台说到AI人工智能,很多人都会想到人脸识别,毕竟这是现实生活中接触最多的人工智能产品。只要轻轻一扫…

    2022年6月21日
    29
  • vue中的横向排列_vue + ElementUI 的横向表格代码「建议收藏」

    vue中的横向排列_vue + ElementUI 的横向表格代码「建议收藏」{{tableData[index*2-2].key}}{{tableData[index*2-2].value}}{{tableData[index*2-1]!==undefined?tableData[index*2-1].key:‘‘}}{{tableData[index*2-1]!==undefined?tableData[index*2-1].value:‘‘}}…

    2022年8月11日
    54
  • 角动量守恒与陀螺力矩[通俗易懂]

    角动量守恒与陀螺力矩[通俗易懂]角动量守恒与陀螺力矩角动量守恒定律.这个定律可以用快转的轮子和它下面的回转器来演示:见图20-1.假如我们站在一个转椅上,并拿着水平轴转动的轮子,这个轮子绕水平轴有一个角动量L0,L0=Jω其中J为轮子绕????轴的转动惯量,ω为绕????轴的角速度(图20-2所示坐标系),绕竖直轴的角动量不会因为椅子的支轴(无摩擦)而改变,假如我们把轮子用手将原来水平的转轴抬起来到竖直的方向,如图20-1所…

    2022年5月15日
    100
  • Python之数学(math)和随机数(random)

    math包包含了最基本的数学运算函数,如果想要更加高级的数学功能,可以使用标准库外的numpy和scipy库,他们不但支持数组和矩阵运算,还有丰富的数学和物理方程可供使用random包可以用来生成

    2021年12月18日
    63

发表回复

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

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