VC|MFC的CDC类及如何使用画笔绘制各种图形(vc应用mfc画图的详细步骤)

VC|MFC的CDC类及如何使用画笔绘制各种图形(vc应用mfc画图的详细步骤)

CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。另外还为绘制文本、处理字体,使用打印机跳转,滚动和播放元文件提供成员函数。

它还为获取和设置绘图属性、映射,处理视点、窗口扩展、转换坐标,处理区域、剪贴、绘制直线及绘制简单椭圆和多边形等形状提供了成员函数。

可以通过CDC对象的成员函数进行所有的绘图。

其对象层次结构如下:

VC|MFC的CDC类及如何使用画笔绘制各种图形(vc应用mfc画图的详细步骤)

类名 说明
CPaintDC 窗口用户区的设备描述环境,在OnDraw()函数中来处理WM_PAINT消息
CClientDC 窗口客户区的设备描述环境,但应用在WM_PAINT消息之外的消息处理函数中
CWindowDC 在整个窗口内(不只是用户区)绘图的设备描述环境
CMetaFileDC 图元文件的设备描述环境,在创建可以回放的图像时使用

专门用于在应用程序窗口客户区绘图的CPaintDC,是所有CDC子类中最常用的一个类。为了防止程序设计人员误把绘图代码写到其他位置,MFC规定,CPaintDC对象只在CView类的OnDraw( )函数中有效。并且为了方便和引起程序员注意,MFC AppWizard在自动为用户生成的CVeiw派生类代码中就生成了如下框架代码:

OnDraw(CDC *Pdc)

{……..}

其中,函数的参数pDC就是指向CPaintDC对象的指针。

系统每次创建应用程序窗口及窗口需要刷新时就会产生WM_PAINT消息,系统接收到这个消息就会自动调用OnDraw( )函数。应用程序也可以调用相关函数来激活OnDraw( ),所以程序中所有对窗口客户区进行绘图的代码都应该写在这个函数中。

CDC类有很多成员函数,包括绘制点、直线、矩形、椭圆、多边形、文本以及位图等的成员函数。

以下是一个小实例:

// Ch9Demo3View.cpp

void CCh9Demo3View::OnDraw(CDC* pDC)

{

CCh9Demo3Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

CPen pen[5];

//创建实线画笔

pen[0].CreatePen(PS_SOLID, 5, RGB(255, 0, 0));

//创建虚线画笔

pen[1].CreatePen(PS_DASH, 1, RGB(0, 255, 0));

//创建点线画笔

pen[2].CreatePen(PS_DOT, 1, RGB(0, 0, 255));

//创建点划线画笔

pen[3].CreatePen(PS_DASHDOT, 1, RGB(0, 255, 255));

// 创建双点划线画笔

pen[4].CreatePen(PS_DASHDOTDOT, 1, RGB(255, 0, 255));

// 保存指向设备上下文原有画笔的指针

CPen *pOldPen;

//以实线画笔绘制矩形

pOldPen=pDC->SelectObject(&pen[0]);

pDC->Rectangle(10, 10, 110, 110);

pDC->TextOut(10, 115, \”Rectangle绘制矩形\”);

//使用虚线画笔和函数Polyline输出多段折线

pDC->SelectObject(&pen[1]);//载入画笔

pDC->Rectangle(180, 10, 330, 110);//绘制矩形

CPoint pts[]={CPoint(190, 20), CPoint(200, 60), CPoint(270, 40), CPoint(210, 80),

CPoint(250, 100), CPoint(300, 30), CPoint(310, 80)};

pDC->Polyline(pts, 7);//绘制多端折线

pDC->TextOut(180, 115, \”Polyline绘制多段折线\”);

// 使用Pie和Arc输出饼图和弧形

pDC->SelectObject(&pen[2]);//载入点线画笔

pDC->Ellipse(10, 140, 160, 240);

pDC->SelectObject(&pen[3]);//载入点划线画笔

pDC->Pie(20, 150, 150, 230, 160, 160, 10, 160);

pDC->SelectObject(&pen[4]);//载入双点划线画笔

pDC->Arc(20, 150, 150, 230, 10, 220, 160, 220);

pDC->TextOut(10, 245, \”不同画笔绘制椭圆、弧形和饼图\”);

//恢复设备上下文的原有画笔

pDC->SelectObject(pOldPen);

//删除所创建的画笔资源

for (int i=0; i<5; i )

pen[i].DeleteObject();

}

VC|MFC的CDC类及如何使用画笔绘制各种图形(vc应用mfc画图的详细步骤)

绘制弧形需要4个坐标点,函数原型如下:

Arc(int x1,int x2, int x3, int x4, int x5, int x6, int x7, int x8)

4个坐标点如下图所示:

VC|MFC的CDC类及如何使用画笔绘制各种图形(vc应用mfc画图的详细步骤)

Pie()函数的参数与上述Arc()函数相同。

-End-

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年3月29日 上午8:04
下一篇 2024年3月29日 上午8:18

相关推荐

  • 梦龙项目管理系统

    梦龙项目管理系统: 高效项目管理的利器 梦龙项目管理系统是一款功能强大、易于使用的项目管理工具。它可以帮助项目经理有效地组织和管理项目工作,提高项目的效率和质量。本文将介绍梦龙项目…

    科研百科 2024年7月14日
    37
  • 智慧社区智能安防系统解决方案(智慧社区智能安防系统解决方案设计)

    总体设计  1、设计目标 实现社区数据全面采集和汇聚 通过整合社区视频监控系统、智能门禁系统、人脸识别系统、微卡口系统、消防系统等多类系统的动态感知数据,实现辖区内实有人口、实有房…

    2022年9月2日
    251
  • 科研经费管理建议

    科研经费管理建议 随着科技的不断发展,科研经费在学术界和工业界中的应用越来越广泛。然而,科研经费管理不当会导致浪费、不公平和安全问题。因此,本文提出了一些科研经费管理的建议,以帮助…

    科研百科 2024年8月21日
    25
  • 北京 项目管理

    北京项目管理: 一个现代城市项目管理的典范 北京作为中国的首都,是一个现代化城市,拥有世界上最高的摩天大楼之一——北京首都国际机场,以及许多其他的基础设施和公共设施。北京项目管理在…

    科研百科 2024年8月17日
    19
  • 新手程序员也在用的低代码平台,低代码OA系统,低代码进…(低代码软件开发平台)

    新手程序有用的低代码平台。 新手程序员该不该用低代码平台?我们都知道刚入门的新手程序员对于整套系统的业务或者底层的代码其实不是特别精通的。这个就让我想起来高考的时候有一个AI的话题…

    科研百科 2024年7月8日
    46
  • 东营市协同办公系统

    东营市协同办公系统:提高工作流程的效率和灵活性 随着现代办公环境的不断演变,协同办公系统已经成为了现代企业必须拥有的工具之一。东营市作为山东省的一个重要城市,其协同办公系统也应该与…

    科研百科 5天前
    11
  • 建设单位(甲方)对施工单位考核管理办法(甲方对施工单位进度考核)

    XXXX有限公司 施工单位考核管理办法 第一章 目的 第一条 为全面提高施工单位的工程建设质量,确保工程进度和施工安全,规范工程管理,使工程建设规范化、标准化、科学化。 第二章 适…

    科研百科 2022年6月11日
    5.5K
  • 市政项目管理系统

    市政项目管理系统 随着城市化进程的不断加速,市政项目的管理也越来越重要。传统的手动管理方式已经无法满足现代项目管理的需求,因此,市政项目管理系统应运而生。 市政项目管理系统是一种集…

    科研百科 2024年5月24日
    61
  • 智慧党建系统提高组织管理效率(智慧党建系统提高组织管理效率的方法)

    在互联网发达的今天,互联网 的趋势引领现代管理方式。智慧党建系统对党组织的好处主要体现在以下几个方面: 提高管理效率:通过数字化的方式,智慧党建系统能够将党员信息、组织活动、学习教…

    科研百科 2024年2月2日
    104
  • 工会经费收支管理

    工会经费收支管理 工会经费是维护职工权益的重要保障,也是工会组织日常工作的重要资金来源。然而,随着经济的发展和工会组织的不断壮大,工会经费收支管理面临着越来越严峻的挑战。本文将探讨…

    科研百科 2024年7月12日
    47