CDC::StretchBlt
BOOL StretchBlt( int x,int y, int nWidth,int nHeight, CDC* pSrcDC,int xSrc, int ySrc,int nSrcWidth, intnSrcHeight, DWORD dwRop );
Return Value
Nonzero if the bitmap is drawn; otherwise 0.
如果位图已经绘制,则返回非零值,否则为0。
Parameters
x
Specifies the x-coordinate (in logical units) of the upper-leftcorner of the destination rectangle.
目标矩形左上角的X逻辑坐标。
y
Specifies the y-coordinate (in logical units) of the upper-leftcorner of the destination rectangle.
目标矩形左上角的Y逻辑坐标。
nWidth
Specifies the width (in logical units) of the destinationrectangle.
目标矩形的宽度(逻辑单位)。
nHeight
Specifies the height (in logical units) of the destinationrectangle.
目标矩形的高度(逻辑单位)。
pSrcDC
Specifies the source device context.
指定源设备上下文。
xSrc
Specifies the x-coordinate (in logical units) of the upper-leftcorner of the source rectangle.
源矩形左上角的X逻辑坐标。
ySrc
Specifies the x-coordinate (in logical units) of the upper-leftcorner of the source rectangle.
源矩形左上角的Y逻辑坐标。
nSrcWidth
Specifies the width (in logical units) of the sourcerectangle.
源矩形的宽度(逻辑单位)。
nSrcHeight
Specifies the height (in logical units) of the sourcerectangle.
源矩形的高度(逻辑单位)。
dwRop
Specifies the raster operation to be performed. Raster operationcodes define how GDI combines colors in output operations thatinvolve a current brush, a possible source bitmap, and adestination bitmap. This parameter may be one of the followingvalues:
指定光栅操作。光栅操作模式说明了GDI是如何组合输出操作中的颜色,包括当前画刷、可能的源位图和目标位图。可以为下列值之一:
Remarks
Copies a bitmap from a source rectangle into a destinationrectangle, stretching or compressing the bitmap if necessary to fitthe dimensions of the destination rectangle. The function uses thestretching mode of the destination device context (set bySetStretchBltMode) to determine how to stretch or compressthe bitmap.
将源矩形中的位图拷贝到目标矩形中,如果有必要,可以扩展或压缩该位图使其与目标矩形尺寸吻合。函数使用目标设备上下文(由SetStretchBltMode设置)的扩展模式来决定如何扩展或压缩位图。
TheStretchBlt function moves the bitmap from the source devicegiven by pSrcDC to the destination device represented by thedevice-context object whose member function is being called. ThexSrc, ySrc, nSrcWidth, and nSrcHeightparameters define the upper-left corner and dimensions of thesource rectangle. The x, y, nWidth, andnHeight parameters give the upper-left corner and dimensionsof the destination rectangle. The raster operation specified bydwRop defines how the source bitmap and the bits already onthe destination device are combined.
StretchBlt 函数将pSrcDC源设备中的位图移动到目标矩形,该矩形用成员函数正在调用的设备上下文来表示。xSrc,ySrc,nSrcWidth和nSrcHeight 参数定义了源矩形的左上角和尺寸。x,yc,nWidth和nHeight参数定义了目标矩形的左上角和尺寸。dwRop指定的光栅操作模式说明了源位图与目标设备上已经存在的位图是如何组合的。
TheStretchBlt function creates a mirror image of a bitmap ifthe signs of the nSrcWidth and nWidth ornSrcHeight and nHeight parameters differ. IfnSrcWidth and nWidth have different signs, thefunction creates a mirror image of the bitmap along the x-axis. IfnSrcHeight and nHeight have different signs, thefunction creates a mirror image of the bitmap along they-axis.
如果nSrcWidth和nWidth或nSrcHeight和nHeight的符号不同,StretchBlt将为位图创建一个镜像。如果nSrcWidth和nWidth符号不同,函数沿X轴创建镜像。如果nSrcHeight和nHeight符号不同,函数沿Y轴创建镜像。
TheStretchBlt function stretches or compresses the sourcebitmap in memory and then copies the result to the destination. Ifa pattern is to be merged with the result, it is not merged untilthe stretched source bitmap is copied to the destination. If abrush is used, it is the selected brush in the destination devicecontext. The destination coordinates are transformed according tothe destination device context; the source coordinates aretransformed according to the source device context.
StretchBlt函数在内存中对源位图进行扩展或压缩,然后将结果拷贝到目标矩形中。如果模板要与结果组合,则在扩展后的位图拷贝到目标矩形后才组合。如果用到画刷,应使用目标设备上下文中选定的画刷。目标坐标根据目标设备上下文来转换,源坐标根据源设备上下文来转换。
If thedestination, source, and pattern bitmaps do not have the same colorformat, StretchBlt converts the source and pattern bitmapsto match the destination bitmaps. The foreground and backgroundcolors of the destination device context are used in theconversion.
如果目标位图、源位图和模板位图的格式不一致,StretchBlt使模板与源位图匹配模板位图格式,转换中会使用到目标设备上下文中的前景色和背景色。
IfStretchBlt must convert a monochrome bitmap to color, itsets white bits (1) to the background color and black bits (0) tothe foreground color. To convert color to monochrome, it setspixels that match the background color to white (1) and sets allother pixels to black (0). The foreground and background colors ofthe device context with color are used.
如果要将黑白位图转换为彩色位图,它将背景色设置为白位(1),前景色设置为黑位(0)。如果要将彩色位图转换为黑白位图,函数设置与背景色匹配的像素为白(1),其它像素为黑(0),用到了带颜色的设备上下文中的前景色和背景色。
Not all devicessupport the StretchBlt function. To determine whether adevice supports StretchBlt, call the GetDeviceCapsmember function with the RASTERCAPS index and check thereturn value for the RC_STRETCHBLT flag.
不是所有的设备都支持StretchBlt函数。调用带RASTERCAPS索引的GetDev-iceCaps 函数来决定是否支持StretchBlt。并检验为返回给RC_STRETCH-BLT标记的值。
两种情况下可能会导致在 Win32 中倒置显示位图:
- cxSrc 和 cxDest 参数的符号不同。 用于 StretchDIBits 文档指出是否 cxSrc 和 cxDest参数的符号不同函数将创建一个位图沿 x 轴的镜像图像。 是否有意或无意这可能导致倒置显示位图。
- 在 BITMAPINFOHEADER biHeight值的符号不正确地反映位图位 DIB 文件中的存储方式。 在 Win16,所有 dib 都是存储的自下而上的使用存储在 DIB文件中的第一次最底部扫描行。 在 Win32 中,dib 也可能会存储的上而下,与第一次存储在最上面的扫描行。自上而下的 dib 打头 BITMAPINFOHEADER 结构中一个负数 biHeight 值 ; 由正biHeight 值表示由下而上 DIBS:
DIB stored as Should have a biHeight value of ------------- ------------------------------- top-down negative bottom-up positive
请确保 biHeight 值被适当地设置为正或负,取决于位图位 DIB文件中已存储的方式。设置此值的方式不匹配可能引起位图下移一个优势,因为 DIB 引擎将错误地解释该位。 渚嬪 DIB存储上而下为一个正数 biHeight 值应导致倒置显示位图。