MFC绘制椭圆的两种简单方法
时间:2014-02-10 16:57:47
收藏:0
阅读:459
方法一:
// CDrawTest1View 绘制 void CDrawTest1View::OnDraw(CDC* pDC) { CDrawTest1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 //修改CView类的虚函数OnDraw绘制椭圆 CRect rect; this->GetClientRect(rect); pDC->Ellipse(rect); }
类CRect是对Windows结构RECT的封装,凡是能用RECT结构的地方都可以用CRect代替。
结构RECT表示一个矩形的位置和尺寸,其定义为:
typedef struct tagRECT{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT;
其中 left、top分别表示矩形左上角顶点的横坐标和纵坐标,right、bottom分别表示矩形右下角顶点的横坐标和纵坐标。由于CRect提供了一些成员函数和重载运算符,使得CRect的操作更加方便。 1.CRect的构造函数 CRect有如下6个构造函数:
CRect( );
CRect( int l, int t, int r, int b );
CRect( const RECT& srcRect );
CRect( LPCRECT lpSrcRect );
CRect( POINT point, SIZE size );
CRect( POINT topLeft, POINT bottomRight );
说明:分别以不同的方式构造CRect对象,参数l,t,r,b分别指定矩形的左边、上边、右边和底边。SrcRect是一个RECT结构的引用。LpSrcRect是一个指向RECT结构的指针。Point指定矩形的左上角顶点的坐标,size指定矩形的长度和宽度。topLeft指定矩形的左上角顶点的坐标,bottomRight指定矩形的右下角顶点的坐标。
方法二:
// CDrawTest1View 消息处理程序 void CDrawTest1View::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用 CView::OnPaint() //从属性里面的事件选项来添加OnPaint()事件 //在本事件中绘图 OnPrepareDC(&dc); OnDraw(&dc); CRect rect; this->GetClientRect(rect); dc.Ellipse(rect); }
OnPrepareDC函数功能:
在OnDraw成员函数调用前被框架函数调用用于屏幕显示。或者在OnPrint 成员函数调用前被调用于打印预览。
专门用于设置屏幕映射、调整的OnDraw的前置函数(也即是在OnDraw前调用)
函数原型:virtual void OnPrepareDC( CDC* pDC, CPrintInfo* pInfo = NULL );
参数解释:
pDC :指向一个用于绘制图像文件的上下文设备。
plnfo:如果OnPrepareDC正被打印或打印预览调用,则指向一个CPrintInfo结构,该结构描述了当前打印作业。m_nCurPage成员指定了将要打印的页面。如果OnPrepareDC正在用于屏幕显示,在该参数为NULL
返回值:无
头文件:afxwin.h
原文:http://blog.csdn.net/ghevinn/article/details/19029305
评论(0)