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年5月20日 下午5:32
下一篇 2024年5月20日 下午5:44

相关推荐

  • 青海省农畜产品著名商标达到45件

      日前,由青海省工商行政管理局公布的2015年度青海省26件著名商标中,青海省青海康普生物科技股份有限公司等10家省级以上农牧业龙头企业注册商标获得认定。至此,青海省农牧业著名商…

    科研百科 2022年6月2日
    271
  • 项目管理软件那个好

    项目管理软件哪个更好 项目管理软件是协助项目经理和团队规划、跟踪和控制项目进展的工具,可以帮助提高项目效率和质量。现在有许多不同类型的项目管理软件可供选择,因此选择哪个更好取决于项…

    科研百科 2024年8月19日
    29
  • 科研项目项目贡献怎么写

    科研项目项目贡献怎么写 科研项目是推动科学技术发展的重要力量,其中项目贡献是项目成功的重要组成部分。一篇好的项目贡献文本应该能够清晰地传达项目的贡献,并为读者提供有益的启示。 首先…

    科研百科 2024年10月29日
    10
  • 河南商丘市多举措强化疫苗使用管理工作

      商丘市睢阳闫集镇畜牧站每年两次组织各村防疫人员进行专项培训,强化疫苗管理措施,要求防疫员在使用动物疫苗过程中应注意以下几点。正确使用疫苗是预防动物疾病发生的有效措施,动物免疫注…

    科研百科 2022年5月31日
    324
  • 电解铝可研报告(电解铝科研项目是什么意思)

    电解铝科研项目是什么意思 电解铝科研项目是一种研究如何使用电能将铝离子还原成铝金属的科研项目。在电解铝项目中,研究人员使用電子束将铝离子化,然后通过电流将铝离子还原成铝金属。这种过…

    科研百科 2024年8月4日
    45
  • 中央党建领导小组秘书组《党建要报》刊登公司大项目党建经验文章

    近日,中央党建领导小组秘书组《党建要报》专题刊发中交集团大项目党建经验文章。截至目前,《党建要报》已经对中交集团党建工作亮点成效进行了5次集中宣传报道。 近年来,中交集团党委始终坚…

    科研百科 2023年9月22日
    201
  • 浙江省中华职教社申报说明和培训公益讲座

    浙江省中华职教社申报说明和培训公益讲座 尊敬的各位领导、专家、老师、同学们: 大家好!我是来自浙江省中华职教社的XXX,今天我非常荣幸地为大家呈现一场关于浙江省中华职教社申报说明和…

    科研百科 2024年11月27日
    1
  • 党务知识|在线党务:党员党费怎么交?(党费怎么在线上交)

    漯河统战 ID:lhtzb0 漯河统战官方微信平台带您看统战新闻、学统战知识、品统战文化、展统战形象。 党员缴纳党费的标准是多少? 答:《关于中国共产党党费收缴、使用和管理的规定》…

    科研百科 2023年1月12日
    313
  • 智能建筑信息化管理平台建设方案(智能建筑信息化应用系统)

    声明 本文搜集于互联网,非原创,如有侵权请联系小编删除! 资料下载 海量行业智慧方案,感兴趣的请私信或关注 知识星球:字节光环 文案较长,篇幅有限,完整版可私信!

    2022年7月10日
    241
  • 项目投资备案管理系统

    项目投资备案管理系统是一种用于管理项目投资备案的软件系统。它可以帮助政府和企业管理系统项目投资方面的信息,确保项目的合法性和合规性。 项目投资备案管理系统的主要作用是收集、整理和存…

    科研百科 2024年12月18日
    0