MFC 直线 虚线 折线 圆 椭圆 矩形 弧形
来源:互联网 发布:绵阳鼎盛医疗软件 编辑:程序博客网 时间:2024/04/30 02:12
****Dlg.h头文件添加:
//为工程添加画笔、点变量数组public:CPen m_pen[5];CPoint m_point[5];public:void DrawLine(CDC *pDC);void DrawPolyline(CDC *pDC);void DrawPolygon(CDC *pDC);void DrawRect(CDC *pDC);void DrawRoundRect(CDC *pDC);void DrawEllipse(CDC *pDC);void DrawArc(CDC *pDC);void DrawAngleArc(CDC *pDC);
****Dlg.cpp构造函数修改:
CLineTestDlg::CLineTestDlg(CWnd* pParent /*=NULL*/): CDialogEx(CLineTestDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//初始化画笔、点变量数组m_pen[0].CreatePen(PS_SOLID,1,RGB(255,0,0)); //红色实线,1像素宽---参数:样式、宽度、颜色m_pen[1].CreatePen(PS_SOLID,6,RGB(0,255,0)); //绿色实线,6像素宽m_pen[2].CreatePen(PS_DASH,1,RGB(255,0,0)); //红色虚线,必须为一个像素宽m_pen[3].CreatePen(PS_DOT,1,RGB(0,0,255)); //蓝色点线,必须为一个像素宽m_pen[4].CreatePen(PS_DASHDOTDOT,1,RGB(255,0,0));//红色双点虚线,必须为一个像素宽//绘制多边形的点数组m_point[0].x=10;m_point[0].y=100;m_point[1].x=10;m_point[1].y=120;m_point[2].x=100;m_point[2].y=105;m_point[3].x=170;m_point[3].y=120;m_point[4].x=170;m_point[4].y=100;}***Dlg.cpp onpaint函数
void CLineTestDlg::OnPaint(){CPaintDC dc(this); // 用于绘制的设备上下文CBrush brush(RGB(190,190,190));//画刷dc.SelectObject(&brush);//将画刷选入DCDrawLine(&dc);DrawPolyline(&dc);DrawPolygon(&dc);DrawRect(&dc);DrawRoundRect(&dc);DrawEllipse(&dc);DrawArc(&dc);DrawAngleArc(&dc);if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}}定义绘图函数:
//绘制直线函数void CLineTestDlg::DrawLine(CDC *pDC){CPen *oldPen=pDC->SelectObject(&m_pen[0]);//保存DC原始画笔for(int i=0;i<5;i++){pDC->SelectObject(&m_pen[i]);//将画笔选入DCpDC->MoveTo(20,20+i*15);//设置DC当前点pDC->LineTo(170,20+i*15);//绘制直线}pDC->SelectObject(oldPen);//回复DC原画笔}//绘制折线void CLineTestDlg::DrawPolyline(CDC *pDC){CPen *oldPen=pDC->SelectObject(&m_pen[0]);//保存DC原始画笔for(int i=0;i<5;i++){for(int j=0;j<5;j++){m_point[j].y+=35;//每次下移35个像素}pDC->SelectObject(&m_pen[i]);pDC->Polyline(m_point,5);}pDC->SelectObject(oldPen);}//绘制多边形void CLineTestDlg::DrawPolygon(CDC *pDC){for(int j=0;j<5;j++)m_point[j].y+=75;//数组中的点下移75个像素CPen *oldPen=pDC->SelectObject(&m_pen[0]);//保存DC原始画笔for(int i=0;i<5;i++){for(int j=0;j<5;j++){m_point[j].y+=35;//每次绘制图形下移35个像素}pDC->SelectObject(&m_pen[i]);pDC->Polygon(m_point,5); //绘制多边形}pDC->SelectObject(oldPen);}//绘制矩形void CLineTestDlg::DrawRect(CDC *pDC){CRect rect(150,20,220,80);CPen *oldPen=pDC->SelectObject(&m_pen[0]);for(int i=0;i<5;i++){rect.OffsetRect(80,0);//每次绘图右移80个像素pDC->SelectObject(&m_pen[i]);pDC->Rectangle(&rect);//绘制矩形}pDC->SelectObject(oldPen);}//绘制圆角矩形void CLineTestDlg::DrawRoundRect(CDC *pDC){CRect rect(150,150,220,230);CPen *oldPen=pDC->SelectObject(&m_pen[0]);for(int i=0;i<5;i++){rect.OffsetRect(80,0);//每次绘图右移80个像素pDC->SelectObject(&m_pen[i]);pDC->RoundRect(&rect,CPoint(15,15));}pDC->SelectObject(oldPen);}//绘制椭圆void CLineTestDlg::DrawEllipse(CDC *pDC){CRect rect(150,260,220,310);CPen *oldPen=pDC->SelectObject(&m_pen[0]);for(int i=0;i<5;i++){rect.OffsetRect(80,0);pDC->SelectObject(&m_pen[i]);pDC->Ellipse(&rect);}pDC->SelectObject(oldPen);}//绘制弧线void CLineTestDlg::DrawArc(CDC *pDC){CRect rect(150,400,220,460);CPoint ptStart(170,440);CPoint ptEnd(210,400);CPen *oldPen=pDC->SelectObject(&m_pen[0]);for(int i=0;i<5;i++){rect.OffsetRect(80,0);ptStart+=CPoint(80,0);ptEnd+=CPoint(80,0);pDC->SelectObject(&m_pen[i]);pDC->Arc(&rect,ptStart,ptEnd);}pDC->SelectObject(oldPen);}//绘制直线与弧线void CLineTestDlg::DrawAngleArc(CDC *pDC){CRect rect(150,500,220,560);CPoint ptCenter(185,600);CPoint ptStart(150,630);int r=30;float angleStart=0;float angleEnd=180;CPen *oldPen=pDC->SelectObject(&m_pen[0]);for(int i=0;i<5;i++){rect.OffsetRect(80,0);ptStart+=CPoint(80,0);pDC->MoveTo(ptStart);pDC->SelectObject(&m_pen[i]);pDC->AngleArc(ptCenter.x,ptCenter.y,r,angleStart,angleEnd);}pDC->SelectObject(oldPen);}
运行效果:
1 0
- MFC 直线 虚线 折线 圆 椭圆 矩形 弧形
- MFC 直线 虚线 折线 圆 椭圆 矩形 弧形
- 如何用MFC画出直线、虚线、折线、圆、椭圆、矩形、弧形(附上源码)
- opencv画直线圆椭圆矩形
- opencv各种画图 直线 矩形 圆 椭圆
- 在MFC中,利用GDI绘制橡皮筋效果-直线,圆,椭圆,矩形
- opencv_tutorial_code学习——画椭圆、圆、填充矩形、直线
- iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)
- iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)
- MFC绘制矩形、椭圆、三角形
- MFC绘制矩形、椭圆、三角形
- 用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形
- 安卓自定义View基础05-Canvas之基础图形绘制,点,线,矩形,圆,椭圆,弧形等
- Android简单的绘制 矩形 圆形 弧形 和直线
- walterzorn 系列-画线、圆、椭圆(卵形)、折线、多边形、矩形
- 【OpenCV3图像处理】绘图功能总结(直线,矩形,圆,椭圆,多边形,文字)
- MFC CDC绘制直线 折现 椭圆 ...
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
- Cadence/Or CAD自带库说明
- Android处理延时加载的方法
- C++:如何删除string对象的末尾非数字字符
- 文件与字符串相互转换
- 内核起步:进程调度
- MFC 直线 虚线 折线 圆 椭圆 矩形 弧形
- Qt 5.20 的安装
- iOS 面试题(八)
- MessageDigest简介
- 关于一个简单的python上传到linux服务器再经过shell脚本ftp传输的问题
- 第一个java程序(9x9乘法表)
- 【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在+源码下载(java版)
- 哈希表简易入门
- easyui 不适用fit属性让布局在一定宽度自适应,小于此宽度产生滚动条