StretchBlt()用法详解

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);

StretchBlt()用法详解_第1张图片

 

修改目标矩形x,y坐标后:

pDC->StretchBlt(100,100,rect.Width(),rect.Height(),&memDC,0,0,m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);

StretchBlt()用法详解_第2张图片

 

修改目标矩形宽度和高度:

pDC->StretchBlt(0,0,rect.Width()/2,rect.Height()/2,&memDC,0,0,m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);

StretchBlt()用法详解_第3张图片

 

修改源矩形x,y坐标:

(截取xy坐标右下的图像区域,由于截取图像比原图要小,应相应该变原图大小为截取后图像大小)

pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,100,100,m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);

StretchBlt()用法详解_第4张图片

若想上图全屏显示,还要修改源矩形宽和高

pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,100,100,m_srcWidth-100,m_srcHeight-100,SRCCOPY);

StretchBlt()用法详解_第5张图片

 

修改源矩形宽和高:

pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,m_bmp.bmWidth/2,m_bmp.bmHeight/2,SRCCOPY);

StretchBlt()用法详解_第6张图片

你可能感兴趣的:(VC++)