可视化课程设计

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

可视化课程设计---------简单的画笔程序
小组成员:张安迪邓硕张兴伦骆睿杰袁凯汪俊博王军钰题目要求:
1.能够绘制直线,矩形(空心和实心)和椭圆(空心和实心);
2.可以通过菜单栏和工具条来选择绘制何种图形;
3.可以选择画笔的颜色、宽度和样式;
4.可以选择画刷的颜色和样式
5.状态栏上显示鼠标的位置信息;
6.程序标题栏为“简单图形绘制程序”;
7.有新建和保存的功能。

实现步骤:
(1)在菜单栏添加对应菜单项
修改好对应ID号后
在工具栏添加对应图形工具,并修改其ID与菜单栏对应ID相同
(2)添加鼠标的DOWN和UP消息处理函数,获得鼠标对应位置的坐标,用来绘制图形
(3)得到绘制图形的位置坐标后,开始创建画笔和画刷,对于直线和空心图形,只需要创建一个CPen对象,直接用调用createpen(style,font,color),接着调用selectobjec(&pen),即可调用画笔,接着分别用moveto(),lineto(),rectangle(),elipse(),即可绘制对应图形。

对于实心图形,除了创建画笔外,另外需要使用Cbrush类,先用画空心图形的方法绘制边框,接着调用CBrush NewBrush1(b_color),然后调用SelectObject(&NewBrush1);即可绘制实心图形,下面给出绘制实
心矩形的代码
if(isdrawrectanglereal)
{
CClientDC ClientDC(this);
CBrush NewBrush1(b_color);
CBrush* pOldBrush=ClientDC.SelectObject(&NewBrush1);
CPen pen,*oldpen;
pen.CreatePen(m_style, m_font, p_color);
oldpen=ClientDC.SelectObject(&pen);
ClientDC.Rectangle(spoint.x,spoint.y,point.x,point.y);
ClientDC.SelectObject(oldpen);
}
(4)画笔相关功能的实现:在创建CPen对象的时候,通过
createpen(style,font,color)就决定了分别用什么颜色,宽度,样式的画笔,对于style 来说,有PS_SOLID,PS_DOT,PS_DASH....这里就选择这三种样式。

比如要画点线,我定义了一个style全局变量,当我点击菜单中的’点线’时
则让style=PS_DOT,其他的方法也类似。

宽度的话,则创建了一个对话框
并生成一个dlg类,点击菜单里的宽度时,则调用Domodel();函数调用对话框,在Edit Control里输入数据时,则将变量存储在m_font这个全局变量内,调用对应函数即可;
(5)画刷的实现方法与画笔完全一样,则不多叙述
状态栏显示鼠标位置信息:先添加一个MOUSEMOVE的消息处理函数,获得其坐标,接着定义一个CStausBar的指针来获取窗口状态栏的
地址 CStatusBar* pStatusBar=(CStatusBar*)GetParentFrame()-> GetDescendantWindow(ID_VIEW_STATUS_BAR);
接着Setpanetext,则可以显示对应位置坐标
(6)在DOC里面添加虚函数即可实现
void CdrawgraphDoc::SetTitle(LPCTSTR lpszTitle)
{
CDocument::SetTitle("简单的绘图程序");
}
(7)添加新建的事件处理函数,并写一句Invalidate();即可实现界面的重绘。

相关文档
最新文档