Windows程序设计报告(绘图软件)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1CAD软件的概括说明:

(1)功能简介:主要有绘画、工具、图形修改等功能。绘画可以实现对矩形、圆形、直线、

扇形、弧线、圆角矩形等自定义画图;工具中有画线、画笔、画刷橡皮等功能;图形修改包括图形移动、图形的放大与缩小、图形的复制与粘贴等,还有图形选择和取消功能作为其他功能的辅助条件。

(2)功能具体说明:

绘制矩形:

绘制圆形:

绘制直线:

绘制扇形:

绘制弧线:

绘制圆角矩形:

画线:画线前要先选择画笔颜色和大小

选择中、绿色然后画线:

橡皮;使用橡皮可以擦拭所绘制的图形和画线

画刷:先选择颜色,然后可用画刷绘制扇形、弧线、圆角矩形,这里选择蓝色

图形移动:仅可移动矩形、圆形和直线,移动前要先进行图形选择

改变大小:改变前先选择然后按键改变

图形复制与粘贴:复制前先选择要复制的图形,粘贴会在图形右10处产生新的相同的

图形

2.主要功能的实现过程及对象的代码和资源

首先新建了一个继承于CObject 的类CGrapghic 类作为各个图形的基类,由这个

基类派生出CRECT 类、CLINE 类、CCIRCLE 类等三个图形类,后写了一个继承于CObArray 的列表类CMapList 类用来存储图形来达到重绘的目的。

CGraphic 类

CMapList类

CRECT类

CLINE类

CCIRCLE类

在Doc类中加入了三个列表成员和一个矩形成员:

CMapList m_MapList;//当前绘制的图形的列表

CObArray m_SelectedList;//选中图形列表

CMapList m_CopyList;//复制的图形列表

CRect rect;

Vie类中加入的成员:

CPoint pt;

CPoint pt2;

int n; //判断图形的种类

int flag; //判断是否画线

int eflag;//判断是否用橡皮

int bflag;//判断是否用画刷

int size;//画笔的大小

COLORREF m_Color; //颜色

CPen oldpen; //画笔

bool ifmove;//判断是否移动

int width; //图形矩形区域与鼠标位置的x距离

int large; //图形矩形区域与鼠标位置的y距离

bool m_select; //判断是否选择图形

bool ifin; //判断光标是否在图形内

加入了一个函数用来控制图形的选择:

void EditLButtonUp(UINT nFlags,CPoint point); //选中后鼠标抬起下面是各个功能的代码实现:

绘图在View类中的OnDraw函数中实现:

void CMy1209View::OnDraw(CDC* pDC)

{

// TODO: add draw code for native data here

CMy1209Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

//循环绘制图元列表,保证绘制过的图形不会消失

for(int i=0;i < pDoc->m_MapList.GetSize();i++)

{

CGraphic* pMap = (CGraphic*) pDoc->m_MapList.GetAt(i);

pMap->draw(pDC);

}

//绘制扇形、弧线、圆角矩形

if(bflag == 1)

pDC->SelectObject(&oldpen);

if(n == 1)

{

pDC->Pie(pDoc->rect.left,pDoc->rect.top,pDoc->rect.right,pDoc->rect.bottom,pt. x,pt.y,pt2.x,pt2.y);

}

if(n == 2)

{

pDC->Arc(pDoc->rect.left,pDoc->rect.top,pDoc->rect.right,pDoc->rect.bottom,pt.x,pt. y,pt2.x,pt2.y);

}

if(n == 3)

{

pDC->RoundRect(pDoc->rect.left,pDoc->rect.top,pDoc->rect.right,pDoc->rect.botto m,pt.x,pt.y);

}

}

下面给出矩形的绘制函数OnRect()

void CMy1209View::OnRect() //绘制矩形

{

// TODO: Add your command handler code here

CRectDialog dc;

dc.DoModal();

Invalidate(true);

CDC* pDC = this->GetDC();

CMy1209Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

//设置指针

CRECT* rect = new CRECT();

//设置起始点

rect->SetStartPoint(CPoint(dc.m_left_x,dc.m_left_y));

rect->SetEndPoint(CPoint(dc.m_right_x,dc.m_right_y));

rect->SetBound();

//调用绘制函数

rect->draw(pDC);

//写入图形列表

pDoc->m_MapList.Add(rect);

//释放CDC

this->ReleaseDC(pDC);

}

//圆形和直线的与其类似。

扇形的绘制函数OnPie()

void CMy1209View::OnPie() //绘制扇形

{

// TODO: Add your command handler code here

CPieDialog dc;

相关文档
最新文档