函数将位图从源矩形复制到目标矩形,并根据需要在当前目标设备上设置的模式下根据目标矩形的大小缩放图像。
原型:
BOOL StretchBlt (
硬盘硬盘est,
int nXOriginDest,int nYOriginDest,int nWidthDest,int nHeighDest,
硬盘硬盘SRC,
int nXOriginSrc,int nYOriginSrc,int nWidthSrc,int nHeightSrc,
DWORD dwRop;
参数:
hdcDest :目标设备环境的句柄。
nXOriginDest,nYOriginDest :指定目标矩形左上角的x轴和y轴坐标(以逻辑为单位)。
nWidthDest,nHeightDest :指定目标矩形的宽度和高度(以逻辑为单位)。
hdcSrc :指向源设备环境的句柄。
nXOriginSrc、nYOriginSrc轴和y轴的坐标,指向源矩形区域的左上角。 以逻辑单位表示。
nWidthSrc、nHeightSrc :指定源矩形的宽度和高度(以逻辑为单位)。
dwRop :指定要执行的光栅操作。 光栅操作码定义了系统在包含画笔、源位图和目标位图等对象的输出操作中如何组合颜色。 有关常用光栅操作码的列表,请参见BitBlt。
在windows ce 1.0和1.01版中,参数dwRop仅支持SRCCOPY和SRCINVERT。
返回值:
如果函数成功执行,则返回值不为零,如果函数执行失败,则返回值为零。 要显示更多错误消息,请调用GetLastError函数。
说明:
StretchBlt函数扩展或压缩内存中的源位图,并将结果复制到目标矩形。 将模板与结果合并时,扩展的位图将复制到目标矩形中,然后合并。 记录扩展元文件时,如果源设备环境被标识为扩展元文件设备环境,则会发生错误。 函数返回FALSE。 如果指定的光栅操作需要画笔,系统将使用当前为目标直流选择的画笔。 目标坐标将使用当前为目标直流指定的转换方法进行转换。 源坐标将使用当前为源直流指定的转换方法进行转换。 如果源转换发生旋转或拼接,则会发生错误。 如果目标位图、源位图和模板位图的颜色格式不匹配,StretchBlt将转换源位图和模板位图以匹配目标位图。 如果要将黑白位图转换为彩色位图,请将背景颜色设置为白色位图[1],并将前景颜色设置为黑色位图[0]。 将彩色位图转换为黑白位图时,函数设置中与背景色匹配的像素为白色(1),其他像素为黑色,用于彩色设备上下文的前景和背景色。 如果nWidthSrc和nWidthDest或nHeightSrc和nHeightDest的大小不同,StretchBlt将创建位图镜像。 如果nWidthSrc和nWidthDest不同,函数将沿x轴创建位图镜像。 如果nHeightSrc与nHeightDest不同,函数将沿y轴创建位图镜像。 Windows CE 1.0和1.01不支持镜像。 不是地方
有设备都支持StretchBlt,调用GetDeviceCaps获取支持。 如果hdc指定镜像DC,水平坐标将从右到左增加,而不是从左到右。 更多关于从右到左向位块传输显示信息(For information about blitting to displays with right-to-leftorientations),参见 Creating Bitmaps。 SetSTretchBltMode
该函数可以设置指定设备环境中的位图拉伸模式。
原型:
int SetSTretchBltMode(HDC hdc, intiStretchMode);
参数:
hdc:设备环境句柄。
iStretchMode:指定拉伸模式。它可以取下列值,这些值的含义如下:
BLACKONWHITE:对消除的和存在的像素的颜色值进行布尔AND(与)操作运算。如果该位图是单色位图,那么该模式以牺牲白色像素为代价,保留黑色像素点。
COLORONCOLOR:删除像素。该模式删除所有消除的像素行,不保留其信息。
BILINEAR:在X和Y轴方向线性修改颜色值。该模式仅当缩放源图像时工作,剪切时无效。该模式只在SRCCOPY, SRCAND, andSRCPAINT 光栅操作下工作。如果设置为其他光栅操作符,COLORONCOLOR模式将被用于大于1bpp位深的位图,BLACKONWHITE 模式将被用于1bpp位深的位图。
返回值:如果函数执行成功,那么返回值就是先前的拉伸模式,如果函数执行失败,那么返回值为0。若想获得更多错误信息,请调用GetLastError函数,该值可能为下面的值。
ERROR_INVALID_PARAMETER: 一个或多个输入参数非法
说明:
拉伸模式在应用程序调用StretchBit函数时定义系统如何将位图的行或列与显示设备上的现有像素点进行组合。 BLACKONWHITE(STRETCH_ANDSCANS) 和WHITEONBLACK(STRETCH_ORSCANS)模式典型地用来保留单色位图中的前景像素。COLORONCOLOR(STRETCH_DELETESCANS)模式则典型地用于保留彩色位图中的颜色。 HALFTONE 模式比其他三种模式需要对源图像进行更多的处理,也比其他模式慢,但它能产生高质量图像,也应注意在设置HALFTONE模式之后,应调用SetBrushOrgEx函数以避免出现刷子没对准现象。 根据设备驱动程序的功能不同,其他一些拉伸模式也可能有效。