山东大学(威海)机电与信息工程学院
2011级
面向对象编程技术 实验五实验报告
班 级: 学 号: 姓 名:
时 间:2013-12-01
山东大学(威海)机电与信息工程学院
2011级
目 录
1 实验要求 ....................................................................................................................................... 1 A、基本功能要求 ............................................................................................................................ 1 B、高级要求 .................................................................................................................................... 1 2 实验过程及结果 ........................................................................................................................... 1
2.1 交互式绘制图形 ............................................................................................................... 1 2.2 绘制直线 ........................................................................................................................... 1 2.3 绘制矩形 ........................................................................................................................... 2 2.4 绘制椭圆 ........................................................................................................................... 3 2.5 输入文本 ........................................................................................................................... 4 2.6 文本保存 ........................................................................................................................... 6 2.7 文本读取 ........................................................................................................................... 7 3 实验总结 ....................................................................................................................................... 8 附录 关键代码 ................................................................................................................................. 8 一、主CPP ...................................................................................................................................... 8 二、 附CPP .................................................................................................................................. 22 三、 头文件 ................................................................................................................................... 28
I
面向对象编程技术实验报告
1 实验要求
A、基本功能要求
1. 交互式绘制图形(至少包括线、矩形和文本),绘制完成的图形能够正确地重现 2. 绘制结果可以正确持久化(存储到文件、从文件中读出)//
3. 最终交付的工程中至少包含两个源文件(.cpp文件,即除主程序外,将部分函数分离到
单独的源文件)、一个rc文件 B、高级要求 用“椭圆”1. 线、矩形、文本的颜色(线色和填充色)、文本字体可调。 绘制 2. 能够通过鼠标点击选中图形,并进行属性的修改,修改的内容可包括:
? 位置 ? 大小 ? 颜色 ? 线型
? 字体(对应文本图元而言)
3. 能够删除选中的图形
2 实验过程及结果
2.1 交互式绘制图形
此次绘制图形的程序和例程中EasyDraw不同,相比后者,本程序的绘制是建立在结构体数组的基础上的。绘制结果完全可以满足实验要求。
效果图如下:
2.2 绘制直线
首先定义一个直线的结构体数组
1
面向对象编程技术实验报告
struct MySaveLine // 直线保存 { POINT ptS; POINT ptE; COLORREF color; int penWidth; int penStyle; };
绘制直线的函数如下: void DrawMyLine(HDC hdc) // 绘制直线 { HPEN hPen; HPEN hPenOld; int j; for(j=0;j 2.3 绘制矩形 首先定义一个矩形的结构体数组 struct MySaveRectangle // 矩形保存 { POINT ptS; POINT ptE; COLORREF color; HBRUSH hNewBrush; int brushColor; int penWidth; int penStyle; }; 绘制矩形的函数如下: void DrawMyRectangle(HDC hdc) // 绘制矩形 { int j; HBRUSH hOldBrush; HPEN hPen; 2 面向对象编程技术实验报告 HPEN hPenOld; for(j=0;j hPenOld = (HPEN)SelectObject(hdc, hPen); switch (pDrawData->iSelectionBrush) { case IDM_BRUSH_WHITE: case IDM_BRUSH_LTGRAY: hOldBrush = (HBRUSH)SelectObject (hdc, GetStockObject(SaveRectangle[j].brushColor)); break; case IDM_BRUSH_COLORSOLID: case IDM_BRUSH_CROSS: hOldBrush = (HBRUSH)SelectObject (hdc, SaveRectangle[j].hNewBrush); break; } Rectangle (hdc, SaveRectangle[j].ptS.x,SaveRectangle[j].ptS.y, SaveRectangle[j].ptE.x, SaveRectangle[j].ptE.y); SelectObject(hdc, hPenOld); DeleteObject(hPen); SelectObject(hdc, hOldBrush); } } 2.4 绘制椭圆 首先定义一个椭圆的结构体数组 struct MySaveEllipse // 椭圆保存 { POINT ptS; POINT ptE; COLORREF color; HBRUSH hNewBrush; int brushColor; int penWidth; int penStyle; }; 绘制椭圆的函数如下: void DrawMyEllipse(HDC hdc) // 绘制椭圆 { int j; HBRUSH hOldBrush; HPEN hPen; 3