VC++之图像操作之剪切图像_幽谷小舍_百度空间

一、创建对话框应用程序




二、添加位图资源



三、编辑对话框资源



四、添加变量、函数

       1、添加变量

public:
     ......
CStatic m_cutimage;
CStatic m_sourceimage;


       2、添加函数


五、添加代码(红色部分)

void CCShowDlg::OnOK()
{
// TODO: Add extra validation here
CBitmap m_bitmap;
HBITMAP m_hbitmap = m_sourceimage.GetBitmap(); //附加位图句柄
m_bitmap.Attach(m_hbitmap);
CDC* m_dc = m_cutimage.GetDC();
CRgn m_rgn;
BITMAP m_bitinfo;
m_bitmap.GetBitmap(&m_bitinfo); //创建一个剪切区域
m_rgn.CreateEllipticRgn(200,200,500,400);
CDC* m_sourcedc = m_sourceimage.GetDC(); //选中剪切区域
m_dc->SelectClipRgn(&m_rgn,RGN_COPY );
m_dc->BitBlt(0,0,m_bitinfo.bmWidth,m_bitinfo.bmHeight,m_sourcedc,0,0,SRCCOPY);
m_sourcedc->SelectClipRgn(&m_rgn,RGN_COPY );
m_sourcedc->BitBlt(0,0,m_bitinfo.bmWidth,m_bitinfo.bmHeight,m_dc,0,0,WHITENESS); //将源图被选中区域改写为白色背景
m_bitmap.Detach();

//CDialog::OnOK();
}

六、编译

七、运行


八、函数说明

       1、CRgn::CreateEllipticRgn函数声明

        BOOL CreateEllipticRgn(int x1,int y1,int x2,int y2)

       x1:椭圆外边界矩形左上角X坐标

       y1:椭圆外边界矩形左上角Y坐标

        x2:椭圆外边界矩形右上角X坐标

       y2:椭圆外边界矩形右上角Y坐标

       功能:创建一椭圆区域。函数调用成功,返回非零值;否则返回零。

       2、CDC::SelectClipRgn函数声明

        int SelectClipRgn(CRgn* pRgn,int nMode)

         pRgn:选中区域,为NULL则选中整个客户区。

        nMode:操作模式。

        功能:将设备上下文中一给定区域设置为剪切区域。返回COMPLEXREGION,表示新剪切区域覆盖了边界;返回NULLREGION,表示剪切预期区域是空的;返回SIMPLEREGION,表示剪切区域没覆盖边界。



郑重声明:资讯 【VC++之图像操作之剪切图像_幽谷小舍_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——