StretchDIBits函数

StretchDIBits函数引用:http://blog.csdn.net/giantchen547792075/article/details/6996011The StretchDIBits functioncopiesthecolordataforarectangleofpixelsinaDIB,JPEG,orPNGimagetothespecifieddestination

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

引用:http://blog.csdn.net/giantchen547792075/article/details/6996011

The StretchDIBits function copies the color data for a rectangle of pixels in a DIB, JPEG, or PNG image to the specified destination rectangle. If the destination rectangle is larger than the source rectangle, this function stretches the rows and columns of color data to fit the destination rectangle. If the destination rectangle is smaller than the source rectangle, this function compresses the rows and columns by using the specified raster operation.

译:

StretchDIBits 函数把DIB、JPEG、PNG图像中一矩形区域内的像素颜色数据复制到指定的目标矩形里。如果目标矩形大于源矩形,此函数将拉伸的行和列以适合目标矩形的颜色数据。如果目标矩形小于源矩形,则此函数使用指定的光栅操作压缩的行和列。

语法:
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 [入参]
目标设备上下文的句柄。
XDest [入参]
角点的 x 坐标,以逻辑单位的目标矩形的左上角。
YDest [入参]
Y 坐标,逻辑单位上的目标矩形的左上角。
nDestWidth [入参]
逻辑单位,目标矩形的宽度。
nDestHeight [入参]
逻辑单位,目标矩形的高度。
XSrc [入参]
角的 x 坐标,以像素为单位,源矩形图像中。
YSrc [入参]
Y 坐标,以像素为单位,源矩形图像中。
nSrcWidth [入参]
宽度,以像素为单位,源矩形图像中。
nSrcHeight [入参]
高度以像素为单位,源矩形图像中。
lpBits [入参]
图像的位,作为字节数组存储的指针。有关详细信息,请参见备注部分。
lpBitsInfo [入参]
指向包含DIB 相关信息的 BITMAPINFO 结构的指针。
iUsage [入参]
指定是否提供的 BITMAPINFO 结构的 bmiColors 成员,以及若然,是否 bmiColors 包含显式的红、 绿、 蓝 (RGB) 值或索引。IUsage 参数必须是下列值之一。
 
 
备注
DIB_RGB_COLORS
颜色表中包含文本的 RGB 值。
DIB_PAL_COLORS
该数组包含到源设备上下文的逻辑调色板的 16 位索引。

 

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

如果函数成功,则返回值是扫描复制的行数。请注意,此值可以为负的镜像内容。

如果该函数失败,或者没有扫描行被复制,则返回值为 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/148419.html原文链接:https://javaforall.net

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


相关推荐

  • WPF中WrapPanel、StackPanel等添加滚动条ScrollViewer

    WPF中WrapPanel、StackPanel等添加滚动条ScrollViewerwpf中,在控件中直接设置ScrollViewer.HorizontalScrollBarVisibility和ScrollViewer.VerticalScrollBarVisibility属性,并不能显示滚动条。因为在wpf中,想要显示滚动条,需要把控件放在滚动条视图控件(ScrollViewer)中。ScrollViewer属性说明:VerticalScrollBarVisibili

    2022年7月23日
    13
  • 不用加减乘除做加法

    不用加减乘除做加法

    2020年11月19日
    225
  • 木马免杀方式_木马入侵的常见方法

    木马免杀方式_木马入侵的常见方法前言免杀,又叫免杀毒技术,是反病毒,反间谍的对立面,是一种能使病毒或木马免于被杀毒软件查杀的软件。它除了使病毒木马免于被查杀外,还可以扩增病毒木马的功能,改变病毒木马的行为。免杀的基本特征是破坏特征,有可能是行为特征,只要破坏了病毒与木马所固有的特征,并保证其原有功能没有改变,一次免杀就能完成了。免杀技术也并不是十恶不赦的,例如,在软件保护所用的加密产品(比如壳)中,有一些会被杀毒软件认为是木马病毒;一些安全领域中的部分安全检测产品,也会被杀毒软件误杀,这时就需要免杀技术来应对这些不稳定因素。1、裸

    2022年8月21日
    5
  • phpMyAdmin安装教程

    phpMyAdmin安装教程phpmyadmin是一款mysql数据库管理工具,是由php编写的,可以通过互联网控制和操作mysql,通过phpmyadmin可以完全对数据库进行操作,例如建立、复制/删除数据等等。可以管理整个MySQL服务器(需要超级用户),也可以管理单个数据库,为了实现后一种,你将需要合理设置MySQL用户,他只能对允许的数据库进行读/写,那要等到你看过MySQL手册中相关的部分。

    2022年6月1日
    29
  • 解决EXSi6.0没有WEB Client的问题

    解决EXSi6.0没有WEB Client的问题问题:安装好EXSi之后通过web访问,只有vSphere下载,没有openwebclient经过百度之后发现EXSi6.0不支持Web,但是支持安装Web,这就好办了。动手!!!思路:1、下载esxui-signed-7119706.vib2、通过SecureCRT连接EXSi服务器3、开启sftp连接4、转到EXSi的/tmp目录,这里仅仅是习惯,其他目录…

    2022年6月5日
    50
  • 如何在Centos7 中安装JDK「建议收藏」

    如何在Centos7 中安装JDK「建议收藏」1.先查看是否安装了openjdk(两种方法)①在命令窗口键入:java -version②在命令窗口键入:rpm -qa | grep java2.在物理机下载的jdk安装包,后缀名是rpm3. 安装命令:rpm -ivh jdk-8u171-linux-x64.rpm4.配置JDK环境:vi /etc/profile#set java environmentJAVA_HOME=/usr/jav…

    2022年8月18日
    7

发表回复

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

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