您的位置:首页 > 大数据 > 人工智能

绘图室(PaintOffice)

2016-04-30 11:34 549 查看
“绘图室”(PaintOffice)可以设计各个图形对象,每个图形对象包括坐标信息,并且可以通过构造函数初始化图形信息;每个图形对象提供Draw()函数,已完成自身的绘制,同时提供SetPos()成员函数来改变成员位置。本次设计中图形对象包括直线、椭圆、矩形三种,如果有兴趣的可以自行添加其他图形。每个类提供构造函数完成信息的初始化,类内没有系统能源申请,可以不要析构函数。Draw()、SetPos()函数可以看成类的成员函数。直线的坐标可用起点和终点的坐标来定位;矩形的坐标用左上角和右下角的坐标定位;椭圆的坐标可用椭圆的外接矩形来定位。

下面列出其中一个图形对象(直线)的相关程序,其他图形对象类似。

//line.cpp
#include "line.h"
#include
using namespace std;

Cline::Cline(int x1,int y1,int x2,int y2):CShape(x1,y1,x2,y2)
{
m_x1=x1;
m_y1=y1;
m_x2=x2;
m_y2=y2;
}

void Cline::Draw()
{
cout<<"绘制直线"<<endl;
}

void Cline::SetPos(int x1,int y1,int x2,int y2)
{
m_x1=x1;
m_y1=y1;
m_x2=x2;
m_y2=y2;
}

//line.h
#pragma once
#include"Shape.h"
class Cline:public CShape
{
public:
Cline(int x1,int y1,int x2,int y2);
void Draw();
void SetPos(int x1,int y1,int x2,int y2);
private:
int m_x1;//起点x坐标
int m_y1;
int m_x2;//终点x坐标
int m_y2;
};


绘图室项目中的每个图形类都有坐标信息以及Draw()、SetPos()函数,这些成员可以作为一个共性放到一个基类中,有派生类继承。由于不同的图形类坐标信息的描述是一样的,所以坐标点和SetPos()函数适合放到父类中;但不同图形类的Draw()函数参数是一样的,只是具体实现不一样,所以在父类中可以设置为虚函数。

设计的基类CShape相关程序如下:

//Shape.cpp
#include "Shape.h"

CShape::CShape(int x1,int y1,int x2,int y2)
{
m_x1=x1;
m_y1=y1;
m_x2=x2;
m_y2=y2;
}

void CShape::SetPos(int x1,int y1,int x2,int y2)
{
m_x1=x1;
m_y1=y1;
m_x2=x2;
m_y2=y2;
}

//Shape.h
#pragma once
class CShape
{
public:
CShape(int x1,int y1,int x2,int y2);
virtual void Draw()=0;
void SetPos(int x1,int y1,int x2,int y2);
protected:
int m_x1;//起点x坐标
int m_y1;//起点y坐标
int m_x2;//终点x坐标
int m_y2;//终点y坐标
};






转载请注明出处:

C++博客园:godfrey_88

http://www.cnblogs.com/gaobaoru-articles/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: