网站大量收购闲置独家精品文档,联系QQ:2885784924

C++面向对象简易图形编辑器.docx

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

山东大学(威海)机电与信息工程学院2011级

山东大学(威海)机电与信息工程学院

2011级

面向对象编程技术实验五实验报告

班 级:

学 号:

姓 名:

时 间:2013-12-01

目 录

实验要求 1

A、基本功能要求 1

B、高级要求 1

实验过程及结果 1

交互式绘制图形 1

绘制直线 1

绘制矩形 2

绘制椭圆 3

输入文本 4

文本保存 6

文本读取 7

实验总结 8

附录关键代码 8

一、主CPP 8

二、附CPP 22

三、头文件 28

面向对象编程技术实验报告

面向对象编程技术实验报告

0

0

实验要求

A、基本功能要求

交互式绘制图形(至少包括线、矩形和文本),绘制完成的图形能够正确地重现

绘制结果可以正确持久化(存储到文件、从文件中读出)//

最终交付的工程中至少包含两个源文件(.cpp文件,即除主程序外,将部分函数分离到单独的源文件)、一个rc文件

用“椭圆”绘制B、高级要求

用“椭圆”绘制

线、矩形、文本的颜色(线色和填充色)、文本字体可调。

能够通过鼠标点击选中图形,并进行属性的修改,修改的内容可包括:

位置

大小

颜色

线型

字体(对应文本图元而言)

能够删除选中的图形

实验过程及结果

交互式绘制图形

此次绘制图形的程序和例程中EasyDraw不同,相比后者,本程序的绘制是建立在结构体数组的基础上的。绘制结果完全可以满足实验要求。

效果图如下:

绘制直线

首先定义一个直线的结构体数组

面向对象编程技术实验报告

面向对象编程技术实验报告

{intj;HBRUSHhOldBrush;HPENhPen;

{

intj;

HBRUSHhOldBrush;HPENhPen;

PAGE1

structMySaveLine //直线保存

{

POINTptS;

POINTptE;

COLORREFcolor;intpenWidth;

intpenStyle;

};

绘制直线的函数如下:

voidDrawMyLine(HDChdc) //绘制直线

{

HPENhPen;HPENhPenOld;intj;

for(j=0;jMAX;j++)

{

hPen=CreatePen(SaveLine[j].penStyle,SaveLine[j].penWidth,SaveLine[j].color);hPenOld=(HPEN)SelectObject(hdc,hPen);

MoveToEx(hdc,SaveLine[j].ptS.x,SaveLine[j].ptS.y,NULL);LineTo(hdc,SaveLine[j].ptE.x,SaveLine[j].ptE.y);SelectObject(hdc,hPenOld);

DeleteObject(hPen);

}

}

绘制矩形

首先定义一个矩形的结构体数组

structMySaveRectangle //矩形保存

{

POINTptS;

POINTptE;

COLORREFcolor;HBRUSHhNewBrush;intbrushColor;

intpenWidth;intpenStyle;

};

绘制矩形的函数如下:

voidDrawMyRectangle(HDChdc) //绘制矩形

HPENhPenOld;for(j=0;jMAX;j++)

{

hPen = CreatePen(SaveRectangle[j].penStyle, SaveRectangle[j].penWidth,SaveRectangle[j].color);

hPenOld=(HPEN)SelectObject(hdc,hPen);switch(pDrawData-iSelectionBrush)

{

caseIDM_BRUSH_WHITE:

caseIDM_BRUSH_LTGRAY:

hOldBrush = (HBRUSH)SelectObject (hdc,GetStockObject(SaveRectangle[j].brushColor));

break;

caseIDM_BRUSH_COLORSOLID:

caseIDM_BRUSH_CROSS:

hOldBrush=(HBRUSH)SelectObject(hdc,SaveRectangle[j].hNewBrush);break;

}

Rectangle(hdc,SaveRectangle[j].ptS.x,SaveRectangle[j].ptS.y,SaveRe

文档评论(0)

159****1944 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档