一、创建对话框应用程序
二、添加位图资源
三、编辑对话框资源
四、添加变量、函数
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,表示剪切区域没覆盖边界。