mfc CRgn 画椭圆对话框

如何使用CRgn 画出圆形对话框

环境:Window mfc

语言:C++


基本思路是:

法一:实例化两个CRgn,一个用来创建矩形(CreateRectRgn()),一个用来创建圆形(CreateEllipticRgn())。然后通过函数(CombineRgn())合并两个区域。

法二:使用一个CRgn rox; 直接画圆CreateEllipticRgn();

代码直接加入函数初始化函数中(OnInitDialog())即可。创建的圆形对话框中也可以添加一些按钮或者其他东西。我是准备在它里面贴一张圆形的按钮图像。。(mfc做什么都不容易)

法一:

CRgn rgn;                         
rgn.CreateRectRgn(0,0,120,120); //画出方框

CRgn rox;
rox.CreateEllipticRgn(0,0,120,120); //画出圆形

rox.CombineRgn(&rgn,&rox,RGN_AND); //两个区域重叠,其中第三个参数是负责划分两个区域的合并关系。有RGn_Copy、Rgn_diff等。

rgn.DeleteObject();   //删除方框的object
SetWindowRgn((HRGN)rox, TRUE); //设置窗口为这个rox。


//由于我用这个圆形对话框的时候,创建完毕之后还需要将它置于最顶层。故顺便加了这句代码。其中m_DlgWindow是圆形对话框的实例。

SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);


法二:

//仔细琢磨了一下,突然发现其实不用实例化两个CRgn;单个的CRgn就可以直接画图了。

CRgn rox;

rox.CreateFllipticRgn(0,0,120,120); //创建椭圆的函数。参数为左上角x,y坐标,和右下角x,y坐标。

rox.deleteobject();

SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值