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

 

修改目标矩形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);

  • 19
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值