首先是画圆,好多人说没有画圆的函数吧,其实圆不就是椭圆的一个特例吗?这个明白了吧。OK,下面说具体实现方法。
第一种实现方法是先画圆,然后调用FillRgn()函数来实现,但是这样就需要自己去构造这个CRgn区域,我开始也是这么做的,但是不知道为什么就是有错误。现象是画完之后弹错误,程序退出。代码如下:
CClientDC dc(this);
CPen pen(PS_SOLID,m_nLinewidth,m_ncolor);
dc.SelectObject(&pen);
CBrush *pBrush=new CBrush(m_ncolor);
dc.Ellipse(point.x-5,point.y-5,point.x+5,point.y+5);
CRgn *hrgn;
hrgn=(CRgn*)CreateEllipticRgn(point.x-5,point.y-5,point.x+5,point.y+5);
dc.FillRgn(hrgn,pBrush);
貌似可以。就是有错误了啊!
第二种方法是对第一种方法的改进,说是改进还不如说是换了个函数。画完圆之后,调用刷子
函数来填充颜色,成功。代码如下:
CClientDC dc(this);
CPen pen(PS_SOLID,m_nLinewidth,m_ncolor);
dc.SelectObject(&pen);
CBrush *pBrush=new CBrush(m_ncolor);
dc.SelectObject(pBrush);
dc.Ellipse(point.x-5,point.y-5,point.x+5,point.y+5);
哈哈。可以尝试一下。我的是在Leftbuttondown中实现的。