首页技术stretchdibits(StretchDIBits 函数)

stretchdibits(StretchDIBits 函数)

编程之家2024-01-29119次浏览

一、bitblt函数怎么用啊

bitblt:

stretchdibits(StretchDIBits 函数)

该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。

用法参数:

hDestDC:指向目标设备环境的句柄。

x:指定目标矩形区域左上角的X轴逻辑坐标。

y:指定目标矩形区域左上角的Y轴逻辑坐标。

nWidth:指定源在目标矩形区域的逻辑宽度。

stretchdibits(StretchDIBits 函数)

nHeight:指定源在目标矩形区域的逻辑高度。

hSrcDC:指向源设备环境的句柄。

xSrc:指定源矩形区域左上角的X轴逻辑坐标。

ySrc:指定源矩形区域左上角的Y轴逻辑坐标。

dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。

下面列出了一些常见的光栅操作代码:

stretchdibits(StretchDIBits 函数)

BLACKNESS:表示使用与物理调色板的索引0相关的色彩来填充目标矩形区域,(对缺省的物理调色板而言,该颜色为黑色)。

DSTINVERT:表示使目标矩形区域颜色取反。

MERGECOPY:表示使用布尔型的AND(与)操作符将源矩形区域的颜色与特定模式组合一起。

MERGEPAINT:通过使用布尔型的OR(或)操作符将反向的源矩形区域的颜色与目标矩形区域的颜色合并。

NOTSRCCOPY:将源矩形区域颜色取反,于拷贝到目标矩形区域。

NOTSRCERASE:使用布尔类型的OR(或)操作符组合源和目标矩形区域的颜色值,然后将合成的颜色取反。

PATCOPY:将特定的模式拷贝到目标位图上。

PATPAINT:通过使用布尔OR(或)操作符将源矩形区域取反后的颜色值与特定模式的颜色合并。然后使用OR(或)操作符将该操作的结果与目标矩形区域内的颜色合并。

PATINVERT:通过使用XOR(异或)操作符将源和目标矩形区域内的颜色合并。

SRCAND:通过使用AND(与)操作符来将源和目标矩形区域内的颜色合并。

SRCCOPY:将源矩形区域直接拷贝到目标矩形区域。

SRCERASE:通过使用AND(与)操作符将目标矩形区域颜色取反后与源矩形区域的颜色值合并。

SRCINVERT:通过使用布尔型的XOR(异或)操作符将源和目标矩形区域的颜色合并。

SRCPAINT:通过使用布尔型的OR(或)操作符将源和目标矩形区域的颜色合并。

WHITENESS:使用与物理调色板中索引1有关的颜色填充目标矩形区域。(对于缺省物理调色板来说,这个颜色就是白色)。

dwRop Values

From wingdi.h:

#define BLACKNESS 0x42

#define DSTINVERT 0x550009

#define MERGECOPY 0xC000CA

#define MERGEPAINT 0xBB0226

#define NOTSRCCOPY 0x330008

#define NOTSRCERASE 0x1100A6

#define PATCOPY 0xF00021

#define PATINVERT 0x5A0049

#define PATPAINT 0xFB0A09

#define SRCAND 0x8800C6

#define SRCCOPY 0xCC0020

#define SRCERASE 0x440328

#define SRCINVERT 0x660046

#define SRCPAINT 0xEE0086

#define WHITENESS 0xFF0062

二、求教,StretchDIBits函数结果色彩不正确

如果目标矩形比源矩形大小要大,那么函数对颜色数据的行和列进行拉伸,以与目标矩形匹配。如果目标矩形大小要比源矩形小,那么该函数通过使用指定的光栅操作对行列进行压缩。

函数原型:int StretchDIBits(HDC hdc, int XDest, int YDest, int nDestWidth, int nDestHeight, int XSrc, int Ysrc, int nSrcWidth, int nSrcHeight, CONST VOID*lpBits, CONST BITMAPINFO* lpBitsInfo, UINT iUsage, DWORD dwRop);参数:hdc:指向目标设备环境的句柄。

XDest:指定目标矩形左上角位置的X轴坐标,按逻辑单位来表示坐标。

YDest:指定目标矩形左上角的Y轴坐标,按逻辑单位表示坐标。

nDestWidth:指定目标矩形的宽度。

nDestHeight:指定目标矩形的高度。

XSrc:指定DIB中源矩形(左上角)的X轴坐标,坐标以像素点表示。

YSrc:指定DIB中源矩形(左上角)的Y轴坐标,坐标以像素点表示。

nSrcWidth:按像素点指定DIB中源矩形的宽度。

nSrcHeight:按像素点指定DIB中源矩形的高度。

lpBits:指向DIB位的指针,这些位的值按字节类型数组存储,有关更多的信息,参考下面的备注一节。

lpBitsInfo:指向BITMAPINFO结构的指针,该结构包含有关DIB方面的信息。

iUsage:表示是否提供了BITMAPINFO结构中的成员bmiColors,如果提供了,那么该bmiColors是否包含了明确的RGB值或索引。参数iUsage必须取下列值,这些值的含义如下:

DIB_PAL_COLOR:表示该数组包含对源设备环境的逻辑调色板进行索引的16位索引值。

DIB_RGB_COLORS:表示该颜色表包含原义的KGB值,若想了解更多的信息,请参考下面备注一节。

返回值:如果函数执行成功,那么返回值是拷贝的扫描线数目,如果函数执行失败,那么返回值是GDI_CRROR。

Windows NT:若想获取更多错误信息,请调用GetLastError函数。

Windows 98、Windows NT 5.0及以后版本:如果设备驱动程序不支持传送给StretchDIBits的JPEG文件格式的图像,则该函数将失败,并返回GEI_ERROR。

备注:自底向上的DIB的起始点为左下角,自顶向下DIB的起始点为左上角。

如果nSrcWidth和nDestWidth参数的符号不同。或是nSrcHeight和nDesHeight参数的符号不同。那么函数StretchDIBits将创建位图的镜像。如果NsrcWidth和NdestWidth符号不同,那么函数将沿着X轴创建位图镜像。如果NsrcHeight和NdestHeight符号不同,那么函数将沿着Y轴创建位图镜像。

如果BITMAPINFOHEADER结构中的成员biCompression为BI_JPEG,那么参数lpBits指向的是一个包含JPEG图像的缓冲区。BITMAPINFOHEADER结构中的biSizeImage成员指定了该缓冲区的大小。参数iUsage必须设为DIB_RGB_COLORS。dwRop必须设为SRCCOPY。

如果BITMAPV4HEADER结构中的成员bV 4Compression为BI_JPEG,那么参数lpBits指向的是一个包含JPEG图像的缓冲区。BITMPV4HEADER结构中的bV4SizeImage成员指定了该缓冲区的大小。参数iUsage必须设为DIB_RGB_COLORS。参数dwRop必须设为SRCCOPY。

如果BITMAPV5HEADER结构中的成员bV 5Compression为BI_JPEG,那么参数lpBits指向的是一个包含JPEG图像的缓冲区。BITMPV5HEADER结构中的bV5SizeImage成员指定了该缓冲区的大小。参数iUsage必须设为DIB_RGB_COLORS。dwRop必须设为SRCCOPY。

为确保打印时可以有正确的图元文件假脱机操作。应用程序应在调用StretchDIBits函数之前调用CHECKJPEGFORMAT转义符,以确认打印机识别JPEG图像。

ICM:执行颜色管理。如果指定的BITMAPINFO结构中的bmiHeader不包含BITMAPV4HEADER或BITMAPV5HEADER,那么当前设备环境的颜色配置(profile)被用作源颜色配置(profile)。如果没有颜色档案,那么就使用RGB。如果指定的BITMAPINFO结构中的成员bmiHeader包含了BITMAPV4HEADER或BITMAPV5HEADER,那么将把位图标头中指定的颜色配置(profile)用作源颜色配置。

ps2铁拳5下载(ps2模拟器铁拳5画面线条)php主机空间(免费PHP主机空间让你轻松开发网站)