CDC::StretchBlt

BOOL StretchBlt(
     int x,
     int y,
     int nWidth,
     int nHeight,
     CDC* pSrcDC,
     intxSrc,
     int ySrc,
     int nSrcWidth,
     int nSrcHeight,
     DWORD dwRop
     )

返回值:如果位图已经绘制,则返回非零值,否则为0。

参数:
x目标矩形左上角的X逻辑坐标。
y目标矩形左上角的Y逻辑坐标。
nWidth目标矩形的宽度(逻辑单位)。
nHeight目标矩形的高度(逻辑单位)。
pSrcDC指定源设备上下文。
xSrc源矩形左上角的X逻辑坐标。
ySrc源矩形左上角的Y逻辑坐标。
nSrcWidth源矩形的宽度(逻辑单位)。
nSrcHeight源矩形的高度(逻辑单位)。
dwRop指定光栅操作。 光栅操作模式说明了GDI是如何组合输出操作中的颜色,包括当前画刷、可能的源位图和目标位图。可以为下列值之一:
·BLACKNESS将所有输出变为黑色。
·DSTINBERT反转目标位图颜色。
·MERGECOPY使用AND运算符组合模板与源位图的颜色。
·MERGEPAINT使用OR运算符组合源位图的反色与目标矩形的颜色。
·NOTSRCCOPY将源位图的反色拷贝到目标矩形中。
·NOTSRCERASE反转使用OR运算符组合源位图与目标矩形后得到的颜色。
·PATCOPY将模板颜色拷贝到目标矩形中。
·PATINVERT使用XOR运算符组合目标矩形与模板颜色。
·PATPAINT使用OR运算符组合模板与源位图的反色。再使用OR运算符将该操作结果与目标矩形组合。
·SRCAND使用AND运算符组合源位图和目标位图的像素。
·SRCCOPY将源位图拷贝到目标位图。
·SRCERASE反转目标矩形的颜色,再使用AND运算符将该结果与源位图组合。
·SRCINVERT使用XOR运算符组合源位图和目标位图的像素。
·SRCPAINT使用OR运算符组合源位图和目标位图的像素。
·WHITENESS使所有输出变成白色。

说明:
将源矩形中的位图拷贝到目标矩形中,如果有必要,可以扩展或压缩该位图使其与目标矩形尺寸吻合。函数使用目标设备上下文(由SetStretchBltMode设置)的扩展模式来决定如何扩展或压缩位图。StretchBlt函数将pSrcDC源设备中的位图移动到目标矩形,该矩形用成员函数正在调用的设备上下文来表示。xSrc,ySrc,nSrcWidth和nSrcHeight 参数定义了源矩形的左上角和尺寸。x,yc,nWidth和nHeight参数定义了目标矩形的左上角和尺寸。dwRop指定的光栅操作模式说明了源位图与目标设备上已经存在的位图是如何组合的。如果nSrcWidth和nWidth或nSrcHeight和nHeight的符号不同,StretchBlt将为位图创建一个镜像。如果nSrcWidth和nWidth符号不同,函数沿X轴创建镜像。如果nSrcHeight和nHeight符号不同,函数沿Y轴创建镜像。StretchBlt函数在内存中对源位图进行扩展或压缩,然后将结果拷贝到目标矩形中。如果模板要与结果组合,则在扩展后的位图拷贝到目标矩形后才组合。如果用到画刷,应使用目标设备上下文中选定的画刷。目标坐标根据目标设备上下文来转换,源坐标根据源设备上下文来转换。如果目标位图、源位图和模板位图的格式不一致,StretchBlt使模板与源位图匹配模板位图格式,转换中会使用到目标设备上下文中的前景色和背景色。如果要将黑白位图转换为彩色位图,它将背景色设置为白位(1),前景色设置为黑位(0)。如果要将彩色位图转换为黑白位图,函数设置与背景色匹配的像素为白(1),其它像素为黑(0),用到了带颜色的设备上下文中的前景色和背景色。不是所有的设备都支持StretchBlt函数。调用带RASTERCAPS索引的GetDeviceCaps 函数来决定是否支持StretchBlt。并检验为返回给RC_STRETCHBLT标记的值。

请参阅:
CDC::BitBlt, CDC::GetDeviceCaps, CDC::SetStretchBltMode, ::StretchBlt