绘图室(PaintOffice)
“绘图室”(PaintOffice)可以设计各个图形对象,每个图形对象包括坐标信息,并且可以通过构造函数初始化图形信息;每个图形对象提供Draw()函数,已完成自身的绘制,同时提供SetPos()成员函数来改变成员位置。本次设计中图形对象包括直线、椭圆、矩形三种,如果有兴趣的可以自行添加其他图形。每个类提供构造函数完成信息的初始化,类内没有系统能源申请,可以不要析构函数。Draw()、SetPos()函数可以看成类的成员函数。直线的坐标可用起点和终点的坐标来定位;矩形的坐标用左上角和右下角的坐标定位;椭圆的坐标可用椭圆的外接矩形来定位。
下面列出其中一个图形对象(直线)的相关程序,其他图形对象类似。
1 //line.cpp 2 #include "line.h" 3 #include 4 using namespace std; 5 6 Cline::Cline(int x1,int y1,int x2,int y2):CShape(x1,y1,x2,y2) 7 { 8 m_x1=x1; 9 m_y1=y1; 10 m_x2=x2; 11 m_y2=y2; 12 } 13 14 void Cline::Draw() 15 { 16 cout<<"绘制直线"<<endl; 17 } 18 19 void Cline::SetPos(int x1,int y1,int x2,int y2) 20 { 21 m_x1=x1; 22 m_y1=y1; 23 m_x2=x2; 24 m_y2=y2; 25 } 26 27 //line.h 28 #pragma once 29 #include"Shape.h" 30 class Cline:public CShape 31 { 32 public: 33 Cline(int x1,int y1,int x2,int y2); 34 void Draw(); 35 void SetPos(int x1,int y1,int x2,int y2); 36 private: 37 int m_x1;//起点x坐标 38 int m_y1; 39 int m_x2;//终点x坐标 40 int m_y2; 41 };
绘图室项目中的每个图形类都有坐标信息以及Draw()、SetPos()函数,这些成员可以作为一个共性放到一个基类中,有派生类继承。由于不同的图形类坐标信息的描述是一样的,所以坐标点和SetPos()函数适合放到父类中;但不同图形类的Draw()函数参数是一样的,只是具体实现不一样,所以在父类中可以设置为虚函数。
设计的基类CShape相关程序如下:
1 //Shape.cpp 2 #include "Shape.h" 3 4 CShape::CShape(int x1,int y1,int x2,int y2) 5 { 6 m_x1=x1; 7 m_y1=y1; 8 m_x2=x2; 9 m_y2=y2; 10 } 11 12 void CShape::SetPos(int x1,int y1,int x2,int y2) 13 { 14 m_x1=x1; 15 m_y1=y1; 16 m_x2=x2; 17 m_y2=y2; 18 } 19 20 //Shape.h 21 #pragma once 22 class CShape 23 { 24 public: 25 CShape(int x1,int y1,int x2,int y2); 26 virtual void Draw()=0; 27 void SetPos(int x1,int y1,int x2,int y2); 28 protected: 29 int m_x1;//起点x坐标 30 int m_y1;//起点y坐标 31 int m_x2;//终点x坐标 32 int m_y2;//终点y坐标 33 };
转载请注明出处:
C++博客园:godfrey_88
转载请注明出处:
C++博客园:godfrey_88
http://www.cnblogs.com/gaobaoru-articles/
posted on 2016-04-30 11:34 Brainer-Gao 阅读(436) 评论(0) 编辑 收藏 举报