使用GDI绘制简单曲线
来源:互联网 发布:seo区综合查询 编辑:程序博客网 时间:2024/05/21 22:27
这里所说的简单曲线主要指的是:圆、椭圆、弧等。同画线一样,都可以通过调用CDC类成员函数来实现绘制工作。
1椭圆
绘制椭圆及圆的成员函数为Ellipse,函数声明如下:
BOOL Ellipse(int x1,int y1,int x2,int y2);
BOOL Ellipse(LPCRECT lpRect);
参数x1和y1指定了所绘制椭圆的边界矩形的左上角顶点坐标值,参数x2和y2指定了所绘制椭圆的边界矩形的右下角顶点坐标值。参数lpRect直接指定了所绘制椭圆的边界矩形区域。
圆作为椭圆的一种特殊情况而被绘制,就是当该椭圆的边界矩形为一个正方形时,圆就会被绘制了。
下面的代码添加到上面的OnDraw函数中便 可以实现分别以指定的圆心绘制椭圆和圆的功能
void CMyFontView::OnPaint() {CPaintDC dc(this); // 用于绘制的设备上下文// TODO: 在此处添加消息处理程序代码// 不要为绘制消息而调用 CWnd::OnPaint()RECT rc;GetClientRect(&rc);dc.SetViewportOrg(rc.right/4,rc.bottom/4);dc.Ellipse(-100,-50,100,50);dc.SetViewportOrg(rc.right*3/4,rc.bottom/4);dc.Ellipse(-100,-100,100,100);}
2弧线
绘制圆弧线的成员函数为Arc,函数声明如下:
BOOL Arc(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);
BOOL Arc(LPCRECT lpRect,POINT ptStart,POINT ptEnd);
参数x1和y1,x2和y2分别表示边界矩形的左上角顶点和右下角顶点,参数x3和y3,x4和y4分别表示所绘制弧线的首末端点。参数lpRect指定了边界矩形,参数ptStart和ptEnd分别表示弧线的首末端点。绘制弧线的缺省方向为逆时针。
void CMyArcView::OnPaint() {CPaintDC dc(this); // 用于绘制的设备上下文// TODO: 在此处添加消息处理程序代码// 不要为绘制消息而调用 CWnd::OnPaint()//将屏幕中左下的矩形区域的中心设置为原点;RECT rc;GetClientRect(&rc);dc.SetViewportOrg(rc.right/4,rc.bottom/4);//绘制圆弧;圆弧半径为100dc.Arc(-100,-100,100,100,-100,0,100,0);}
3圆角矩形
圆角矩形和椭圆有机的结合在一起,即把矩形的4个角点椭圆化。如果把圆角矩形的4个圆角移凑到一起,就会拼成一个完整的椭圆。要绘制圆角矩形,可以使用RoundRect()函数,其声明
BOOL RoundRect(int x1,int y1,int x2,int y2,int x3,int y3)
BOOL RoundRect(LPRECT lpRect,POINT point);
参数x1和y1指定了矩形左上角点坐标,x2和y2指定了矩形右下角坐标,x3表示用来画圆角的椭圆的宽度,y3表示该椭圆的高度。
4扇形
椭圆弧及其始点和终点所对应的两条椭圆半径所围成的图形称为扇形。绘制扇形,可以使有Pie()函数,其声明如下:
BOOL Pie(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);
BOOL Pie(LPCRECT lpRect,POINT ptStart,PONIT ptEnd);
其参数与Arc()函数一样的。
5多边形
绘制折线可以使用PolyLine()函数和PolyLineTo(),多边形可以说是由首尾相连的封闭折线所围成的图形,绘制多边形可以使用函数Polygon()其声明如下:
BOOL Polygon(LPPOINT lpPoints,int nCount);
参数lpPoints指向一个存放多边形顶点的矩阵。参数nCount记录多边形顶点个数。
下面的代码介绍了使用PolyLine()函数和PolyBezier()函数,以给定的控制顶点绘制贝齐尔曲线以及其控制多边形:
//将屏幕右下的矩形区域的中心设置为原点;RECT rc;GetClientRect(&rc);dc.SetViewportOrg(rc.right*3/4,rc.bottom*3/4);//给定控制顶点CPoint pt[7];pt[0].x=-150;pt[0].y=0;pt[1].x=-100;pt[1].y=-75;pt[2].x=-50;pt[2].y=-75;pt[3].x=0;pt[3].y=0;pt[4].x=50;pt[4].y=75;pt[5].x=100;pt[5].y=75;pt[6].x=150;pt[6].y=0;//绘制控制多边形;dc.Polyline(pt,7);//绘制控制多边形dc.PolyBezier(pt,7);
- 使用GDI绘制简单曲线
- 使用GDI+画曲线
- 利用GDI+、贝塞尔曲线绘制一个带曲线的矩形
- 使用GDI绘制点
- 使用GDI绘制直线
- 使用GDI绘制矩形
- 使用GDI绘制点
- 使用GDI绘制直线
- 使用GDI绘制矩形
- C#学习笔记之使用GDI绘制简单的图形
- GDI绘制简单的图形
- (C#)GDI+简单绘图画曲线
- HGE使用GDI绘制中文字体
- 使用GDI绘制假按钮
- 使用GDI+绘制验证码
- 使用GDI绘制验证码
- 使用GDI绘制验证码
- 使用Windows GDI绘制图形
- 随笔:我的未来是不是梦
- 深入理解C语言
- gridview导出excel2
- C语言小函数
- http协议简洁
- 使用GDI绘制简单曲线
- USB的八个问题和答案
- 解决request中文乱码的问题
- 私有云vs公有云vs混合云
- OSG的优点
- Delphi从应用程序资源中直接执行dll(不用先把dll存到磁盘上)
- TagSupport类的生命周期
- 继续聊WPF——设置网格控件列标题的样式
- xstream转换Map和List