勇芳软件工作室.汉化:  Bitmaps > Bitmap Functions >

StretchDIBits

Previous pageReturn to chapter overviewNext page

描述

 

StretchDIBits函数将DIB中的像素矩形的颜色数据复制到指定的目标矩形。如果目标矩形大于源矩形,则该函数会拉伸颜色数据的行和列以适合目标矩形。如果目标矩形小于源矩形,则此函数通过使用指定的栅格操作来压缩行和列。

 

Windows 98 / Me,Windows 2000 / XPVista / Windows 7StretchDIBits已被扩展为允许将JPEG或PNG图像作为源图像传递。

 

C++ 语法

 

int StretchDIBits(

__in HDC hdc,

__in int XDest,

__in int YDest,

__in int nDestWidth,

__in int nDestHeight,

__in int XSrc,

__in int YSrc,

__in int nSrcWidth,

__in int nSrcHeight,

__in const VOID *lpBits,

__in const BITMAPINFO *lpBitsInfo,

__in UINT iUsage,

__in DWORD dwRop

);

 

PowerBASIC 语法

 

FUNCTION StretchDIBits( _

BYVAL hdc AS DWORD, _

BYVAL XDest AS LONG, _

BYVAL YDest AS LONG, _

BYVAL nDestWidth AS LONG, _

BYVAL nDestHeight AS LONG, _

BYVAL XSrc AS LONG, _

BYVAL YSrc AS LONG, _

BYVAL nSrcWidth AS LONG, _

BYVAL nSrcHeight AS LONG, _

BYREF lpBits AS ANY, _

BYREF lpBitsInfo AS BITMAPINFO, _

BYVAL iUsage AS DWORD, _

BYVAL dwRop AS DWORD _

) AS LONG

 

参数

 

hdc

 

[in]处理目标设备上下文。

 

XDest

 

in]指定目标矩形左上角的x坐标(以逻辑为单位)。

 

YDest

 

[in]指定目标矩形左上角的y坐标(以逻辑为单位)。

 

nDestWidth

 

[in]指定目标矩形的逻辑单位宽度。

 

nDestHeight

 

[in]指定目标矩形的高度(以逻辑为单位)。

 

XSrc

 

[in]指定DIB中源矩形的x坐标(以像素为单位)。

 

YSrc

 

[in]指定DIB中源矩形的y坐标(以像素为单位)。

 

nSrcWidth

 

[in]指定DIB中源矩形的宽度(以像素为单位)。

 

nSrcHeight

 

[in]指定DIB中源矩形的高度(以像素为单位)。

 

lpBitsInfo

 

[in]指向包含DIB信息的BITMAPINFO结构的指针。

 

iUsage

 

[in]指定是否提供BITMAPINFO结构的bmiColors成员,如果是,是否bmiColors包含明确的红色,绿色,蓝色(RGB)值或索引。iUsage参数必须是以下值之一。

 

含义

DIB_PAL_COLORS

该数组包含16位索引到源设备上下文的逻辑调色板。

DIB_RGB_COLORS

颜色表包含文字RGB值。

 

有关详细信息,请参阅备注部分。

 

dwRop

 

[in]指定源像素,目标设备上下文的当前画笔和目标像素如何组合以形成新映像。有关详细信息,请参阅以下备注部分。

 

返回值

 

如果功能成功,则返回值是复制的扫描行数。

 

如果函数失败,返回值为GDI_ERROR。

 

Windows NT / 2000 / XPVista / Windows 7:要获取扩展错误信息,请调用GetLastError.

 

Windows 98 / Me,Windows 2000 / XPVista / Windows 7:如果驱动程序不支持传递给StretchDIBits的JPEG或PNG文件镜像,则该函数将失败并返回GDI_ERROR。如果发生故障,则应用程序必须自行退回到JPEG或PNG支持,才能将映像解压缩到位图中,然后将位图传递给StretchDIBits.

 

备注

 

自下而上的DIB的起源是左下角;自顶向下的DIB的原点是左上角。

 

StretchDIBits如果nSrcWidthnDestWidth参数的符号,或nSrcHeightnDestHeight参数不同,则会创建位图的镜像。如果nSrcWidthnDestWidth具有不同的符号,则该函数将沿x轴创建位图的镜像。如果nSrcHeightnDestHeight具有不同的符号,则该函数将沿y轴创建位图的镜像。

 

Windows 98 / Me,Windows 2000 / XPVista / Windows 7:此函数允许将JPEG或PNG图像作为源图像传递。如何使用每个参数保持不变,除了:

 

·如果BITMAPINFOHEADERbiCompression成员为BI_JPEG或BI_PNG,则LP位元ca分别指向包含JPEG或PNG图像的缓冲区。BITMAPINFOHEADER结构的biSizeImage成员指定缓冲区的大小。必须将iUsage参数设置为DIB_RGB_COLORS。必须将dwRop参数设置为SRCCOPY。

 

·为确保在打印时正确的元文件假脱机,应用程序必须调用CHECKJPEGFORMAT或CHECKPNGFORMAT转义符来验证打印机是否在调用StretchDIBits之前识别JPEG或PNG图像。

 

ICM:如果通过调用SetICMMode使iEnableICM参数设置为ICM_ON启用了颜色管理,则执行颜色管理。如果lpBitsInfo指定的位图具有指定伽玛和端点成员的BITMAPV4HEADER或指定伽玛和端点成员或profileData和profileSize成员的BITMAPV5HEADER,则该调用将位图的像素视为在这些成员描述的颜色空间中表达,而不是在设备上下文的源颜色空间中。

 

引用文件 #INCLUDE Once

 

WinGdi.inc(包括Windows.inc)