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 使所有输出变成白色。
示例如下:
正常全屏显示:
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);
修改目标矩形x,y坐标后:
pDC->StretchBlt(100,100,rect.Width(),rect.Height(),&memDC,0,0,m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);
修改目标矩形宽度和高度:
pDC->StretchBlt(0,0,rect.Width()/2,rect.Height()/2,&memDC,0,0,m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);
修改源矩形x,y坐标:
(截取xy坐标右下的图像区域,由于截取图像比原图要小,应相应该变原图大小为截取后图像大小)
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,100,100,m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);
若想上图全屏显示,还要修改源矩形宽和高
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,100,100,m_srcWidth-100,m_srcHeight-100,SRCCOPY);
修改源矩形宽和高:
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,m_bmp.bmWidth/2,m_bmp.bmHeight/2,SRCCOPY);