mfc CRgn 画椭圆对话框

原创 2016年05月31日 09:41:20

如何使用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);

版权声明:本文为没有蛀牙lm的原创文章,未经没有蛀牙lm的允许不可转载。 http://blog.csdn.net/i_likechard

CRgn几种创建方法,不规则窗体

一、序言  在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我们常用的,“记事本”,“扫雷”,等等。矩形窗体,具有编程实现简单,风格简洁的优点,所以在普通文档应用程序和简...

MFC异形窗口-多边形窗口-根据图片自定义窗口形状-CRgn

Windows中所有窗口显示默认为矩形,很多时候我们希望窗口的形状可以随意变化。这个时候我们就需要使用MFC的CRgn类, 每一个窗口都有一个自己的CRgn,定义了当前窗口的显示区域,CRgn就好像...

用MFC画椭圆

在矩形的相交区域画椭圆
  • sanqima
  • sanqima
  • 2014年06月25日 21:57
  • 1186

VC/MFC动态画线,画圆,画椭圆,画矩形

VC/MFC动态画线,画圆,画椭圆,画矩形 http://blog.csdn.net/zyq11223/article/details/8271006 ...

C++/MFC-GDI绘图之CRgn区域,CFile

一、常用成员函数 CRgn类成员函数 CreateRectRgn 创建一个矩形区域来初始化对象 CreateRectRgnIndirect 创建一个矩形区域来初始化对象参数是一...

VC/MFC动态画线(橡皮线),画圆,画椭圆,画矩形

所谓的动态画线,画矩形,画椭圆的本质就是在于消隐问题的解决以及对Windows消息循环机制的理解,消隐问题:因为MFC中有一个函数SetROP2,通过将该函数的参数设置为R2—NOT(当前绘制的像素值...
  • zyq11223
  • zyq11223
  • 2012年12月07日 22:36
  • 29952

MFC动态画线,画圆,画椭圆,画矩形

今天我在csdn网站上通过学习别人的博客学习到了动态画矩形,画线的方法,这使得我对Windows的消息循环机制有了更深刻的理解。首先来总结一下我今天的收获,呵呵有收获就是不错的,说明我进步了,感谢这两...
  • zmr1991
  • zmr1991
  • 2014年11月17日 21:53
  • 954

MFC绘制椭圆的两种简单方法

代码: // CDrawTest1View 绘制 void CDrawTest1View::OnDraw(CDC* pDC) { CDrawTest1Doc* pDoc = GetDocument...
  • ghevinn
  • ghevinn
  • 2014年02月10日 09:24
  • 8699
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mfc CRgn 画椭圆对话框
举报原因:
原因补充:

(最多只允许输入30个字)