VC课程设计说明书
更新时间:2023-06-02 08:54:01 阅读量: 实用文档 文档下载
唐山学院
VC程序设计课程设计
题目绘图应用程序的设计和实现
系(部)计算机科学与技术系
班级06计算机科学与技术1班
姓名任招静
学号2060206124
指导教师郭琳虹
2009年06月29日至07月03日共1周2009年7月3日
VC程序设计课程设计任务书
一、设计题目、内容及要求
1、设计题目:绘图应用程序的设计与实现
2、设计内容及要求:
利用MFC应用程序、图形处理的基本知识,设计一个绘图应用程序,具有以下功能:①图形绘制功能:直线、椭圆、矩形、文本(必须实现的功能)②图形修改功能:线条颜色、线条类型、填充方式的设置(必须实现的功能)③数据保存功能:能够把图形数据保存到文件中(选做功能)④具有删除、剪切、撤销等编辑功能(选做功能)。
二、要求的设计成果(课程设计说明书、设计实物、图纸等)
1、用Visual C++进行编码,实现应用程序的功能。注重编码质量,代码要有适当的注释;
2、撰写课程设计说明书一份,不少于2000字。课程设计说明书应包括封面、任务书、正文(设计的基本思路、设计的步骤及主要代码解释)、参考文献(资料)、附录等内容。
三、进程安排
6月29日:完成需求分析,确定程序功能,确立程序设计思想
6月30日~7月1日:进行详细设计,实现编码
7月2日:进行程序测试,完善编码;撰写设计说明书,准备答辩
7月3日:答辩
四、主要参考资料
[1]王育坚.Visual C++面向对象编程教程.第2版.北京:清华大学出版社,2008
[2]侯俊杰.深入浅出MFC.第2版.广东:南方出版社,2007
指导教师(签名):教研室主任(签名):
注:可以附页
课程设计成绩评定表
出勤情况出勤天数缺勤天数
成绩评定出勤情况及设计过程表现(20分)课设答辩(20分)
设计成果(60分)
总成绩(100分)
提问
(答辩)
问题
情况
综
合
评
定
指导教师签名:
年月日
唐山学院课程设计
11总体设计
1.1程序设计思想
根据绘图板的构造及用户的需求,首先要具有最基本的画图工具栏,其中具有曲线、直线、矩形、椭圆等基本图形按钮及文字按钮,当按下不同按钮时,需要完成不同图形的绘制,这就要添加WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE 的消息处理函数,并填写相应语句以实现图形及文本绘制。若想设置所绘图形的颜色、线宽及样式,需要设置不同的画笔和画刷,设置颜色可以通过调用颜色通用对话框返回颜色值,而字体的设置也可通过调用字体通用对话框返回字体值。其次,当改变窗口大小时,所绘内容将要消失,这时就需要对所绘图形及文字进行重绘。然后,要想实现所绘图形的保存,就需要对各个图形及字体进行序列化。最后,可以加一些附加设置,增加画笔、画刷、橡皮按钮,创建颜色工具栏,在状态栏显示鼠标坐标。
1.2程序流程图
打开程序,绘制图形文本,可以设置格式,如保存则执行序列化,关闭,重新打开时可将保存图形打开。
图1程序流程图打开
显示保存图形
是
图形文本绘制
设置图形文本格式序列化
是
否
否
是否打开保存图形
是否保存
关闭
唐山学院课程设计
21.3程序模块图
绘图应用程序包括四个主要模块:绘制图形文字模块、设置图形文字格式模块、重绘模块、图形文字序列化模块。
图2程序模块图绘图
应用
程序绘制图形文字绘制手划线
设置图形字体格式
重绘图形文字序列化设置文字格式设置画刷样式设置画笔样式
绘制文字
绘制椭圆
绘制矩形
绘制直线
重绘手划线
重绘直线
重绘矩形
重绘椭圆
手划线序列化
矩形序列化
直线序列化
椭圆序列化
重绘文字
文字序列化
唐山学院课程设计
1.4程序设计步骤
1.在工具栏添加按钮,添加绘制手划线、直线、矩形、椭圆、字体代码
2.在资源视图中,增加设置菜单及风格对话框,利用菜单命令分别调用颜色、风格、字体对话框,实现图形及文字的格式设置
3.新建手划线、直线、矩形、椭圆、文字的一般类,添加代码实现图形及文字的绘制
4.对手划线、直线、矩形、椭圆、文字进行序列化,以实现图形及文字的保存及打开
5.在资源视图中,绘制不同光标,为图形工具栏填加画笔、画刷、橡皮按钮,在代码中设置光标,并完成绘制功能
6.创建颜色工具栏,实现快捷设置颜色,并设置图形工具栏及颜色工具栏位置属性
7.添加状态栏,显示鼠标坐标
1.5程序功能介绍
1.绘制直线、手划线、矩形、椭圆、文字
2.具有画笔、画刷及橡皮功能
3.设置画笔颜色
4.设置各种图形的风格样式(包括线条风格及填充样式)
5.设置字体
6.重绘功能(改变窗口大小时重新绘制)
7.保存并打开所绘图形
3
唐山学院课程设计
2详细设计
2.1类型设置
在绘制图形及字体之前,要对绘制哪个图形设置标记,定义整型shape变量,为0时,表示绘制手划线,为1时表示绘制直线,2表示绘制矩形,3表示绘制椭圆,4表示绘制文字,5表示使用画笔,6表示使用画刷,7表示使用橡皮。
2.2图形的绘制
2.2.1绘制手划线
Shape为0时绘制手划线,首先为视图类CMyDrawView添加成员变量。线段起始坐标定义为CPoint类型,鼠标拖拽标记定义为bool型,绘制时采用标准的十字光标,定义一个HCURSOR型成员变量,在视图类CMyDrawView的头文件中增添必要的成员变量的定义。
在视图类CMyDrawView的构造函数中初始化拖拽标记,设置十字光标。
利用类向导为视图类添加按下鼠标左键WM_LBUTTONDOWN、移动鼠标WN_MOUSEMOVE 和释放鼠标左键WM_LBUTTONUP的消息处理函数。
系统中任一时刻只有当前窗口才能捕获鼠标。在OnLButtonDown()函数中通过调用CWnd类的成员函数SetCapture()捕获鼠标,由于在客户区捕获鼠标后在非客户区就不能使用鼠标了,因此使用鼠标画图结束后应该调用函数ReleaseCapture()释放鼠标。
在应用程序的初始化成员函数InitInstance()中调用SetWindowText()函数设置窗口标题为简易画图板。
2.2.2绘制直线
Shape为1时绘制直线,跟绘制手划线类似,在视图类OnMouseMove()函数中调用SetROP2(R2_NOTCOPYPEN)设置虚画笔,并没有真正绘制,而在视图类OnLButtonUp ()函数中才真正调用MoveTo()、LineTo()函数完成起点到当前点的绘制。
2.2.3绘制矩形
Shape为2时绘制直线,跟绘制直线类似,同样在视图类OnMouseMove()函数中调用SetROP2(R2_NOTCOPYPEN)设置虚画笔,而在视图类OnLButtonUp()函数中才真正调用Rectangle()函数完成起点到当前点的绘制。
2.2.4绘制椭圆
Shape为3时绘制直线,跟绘制直线类似,同样在视图类OnMouseMove()函数中调用SetROP2(R2_NOTCOPYPEN)设置虚画笔,而在视图类OnLButtonUp()函数中才真正
4
唐山学院课程设计
调用Ellipse()函数完成起点到当前点的绘制。
2.2.5绘制文字
Shape为3时绘制文字,首先在资源视图中新建对话框,仅有一个编辑框,新建对话框类CText,通过类向导设置关联变量m_text(CString类型)。
在视图类OnLButtonDown()函数中调用对话框,获取输入的字符串,通过调用TextOut()函数在鼠标按下位置point绘制字符串。
2.3图形及字体风格设置
2.3.1获得画笔颜色
首先在菜单栏添加颜色选项,通过类向导为颜色添加COMMOND消息处理函数,在函数中通过调用颜色通用对话框获得颜色的值,并将颜色值赋给CMyDrawView类的成员变量m_color,m_color为画笔颜色变量。
在绘制直线、手划线、矩形、椭圆时,将画笔颜色设置为m_color。
2.3.2风格设置
首先在资源视图中插入对话框,添加一组单选按钮表示画笔样式,再添加一组单选按钮表示画刷样式,包括普通话刷和堆画刷。再增加一个编辑框和一个旋转按钮,设置旋转按钮属性,是编辑框与旋转按钮成为一体,为对话框建类CTypeallDlg,通过类向导为单选按钮、编辑框、旋转按钮定义关联变量,通过语句将编辑框与旋转按钮关联,设置旋转按钮值范围及初始值。
在菜单栏添加风格选项,通过类向导为风格添加COMMOND消息处理函数,在函数中调用风格对话框,获取所设置的值,将画笔类型赋给CMyDrawView类的成员变量pentype,pentype为画笔类型变量,将画刷类型赋给CMyDrawView类的成员变量brushtype,brushtype为画刷类型变量,将画笔宽度赋给CMyDrawView类的成员变量penwidth,penwidth为画笔宽度变量。
在绘制直线、手划线、矩形、椭圆时,将画笔类型设置为pentype,将画笔宽度设置为pentype,在绘制矩形、椭圆时,将画刷类型设置为brushtype。
2.3.3字体设置
首先在菜单栏添加字体选项,通过类向导为字体添加COMMOND消息处理函数,在函数中通过调用字体通用对话框获得字体及文字颜色的值,并将字体值赋给CMyDrawView 类的成员变量m_fontdlg,m_fontdlg为字体变量,将文字颜色值赋给CMyDrawView类的成员变量m_clrtext,m_clrtext为文字颜色变量。
2.4重绘
5
唐山学院课程设计
2.4.1手划线重绘
首先要新建一般类CLine,基类为CObject,然后为类CLine定义成员变量。一条线段需要起点、终点、画笔类型、画笔宽度、画笔颜色来确定,在头文件CLine.h中定义两个表示起点和终点的成员变量m_pt1(CPoint类型)和m_pt2(CPoint类型)以及表示画笔类型、画笔宽度、画笔颜色的成员变量pentype(int类型)、penwidth(int 类型)、m_color(COLORREF类型),定义成员函数DrawLine(),它根据pt1,pt2,tp, wt,cl画一条直线。
一般都使用数组来保存多条线段的数据,而且MFC提供了实现动态数组的模版。类CObArray支持CObject指针数组,用它定义对象可以动态生成。这样可以将存放在每条线段数据的变量的指针存到CObArray类的对象中。为此在CMyDrawDoc文档类中定义成员变量和成员函数,并包括CLine类定义的头文件。
成员变量m_LineArray是MFC数组类模版CTypedPtrArray的对象,为了使用MFC 类模版,必须包含MFC头文件afxtempl.h。
在实现源文件MyDrawDoc.cpp中编写成员函数的实现代码。
在视图类CMyDrawView的鼠标移动处理函数OnMouseMove()中调用AddLine()函数,保存当前线段的起点、终点、画笔类型、画笔宽度、画笔颜色。
在改变窗口大小时,调用OnDraw()函数重新绘制,在其中填写代码将保存在动态数组中的线段一一绘制出来,这样就实现了手划线的重绘。
2.4.2直线重绘
与手划线重绘类似,新建一般类CSline,基类为CObject,同样根据起点、终点、画笔类型、画笔宽度、画笔颜色进行重绘,只是将保存当前线段的起点、终点、画笔类型、画笔宽度、画笔颜色的函数AddSline()放到视图类CMyDrawView的鼠标左键释放处理函数OnLButtonUp()中。
2.4.3矩形重绘
同理,矩形重绘需要新建一般类CRectangle,基类为CObject,根据起点、终点、画笔类型、画笔宽度、画笔颜色、画刷类型进行重绘,与直线重绘一样,也只将保存当前矩形的起点、终点、画笔类型、画笔宽度、画笔颜色、画刷类型的函数AddRectangle ()放到视图类CMyDrawView的鼠标左键释放处理函数OnLButtonUp()中。
2.4.4椭圆重绘
同理,椭圆重绘需要新建一般类CEllipse,基类为CObject,根据起点、终点、画笔类型、画笔宽度、画笔颜色、画刷类型进行重绘,与直线重绘一样,也只将保存当前椭圆的起点、终点、画笔类型、画笔宽度、画笔颜色、画刷类型的函数AddEllipse()放到视图类CMyDrawView的鼠标左键释放处理函数OnLButtonUp()中。
6
唐山学院课程设计
2.4.5文字重绘
新建一般类CFonttext,基类为CObject,根据字体、文字颜色、位置、字符串进行重绘,只将保存当前文字的字体、文字颜色、位置、字符串的函数AddFonttext()放到视图类CMyDrawView的鼠标左键按下处理函数OnLButtonDown()中绘制文字函数之前。
2.5序列化
2.5.1手划线序列化
在CLine类的声明头文件Line.h中添加函数Serialize()的声明和DECLARE_SERIAL宏。
在实现源文件Line.cpp中成员函数定义前添加IMPLEMENT_SERIAL宏。
在CLine类Serialize()函数中将起点、终点、画笔类型、画笔宽度、画笔颜色变量进行序列化。
在CMyDrawDoc类Serialize()函数中调用CObArray类的序列化函数。
至此,MyDraw已经实现了文档的读写功能。
为CMyDrawDoc类添加虚函数DeleteContents(),当点击新建命令时实现对当前客户区窗口中所绘制图形的清除。
在文档派生类的成原函数AddLine()调用文档类的成员函数SetModifedFlag(),为程序添加提示保存功能。
2.5.2直线序列化
与手划线序列化做相似的处理,只是对应好相应的类及相应的成员函数。
在CSline类Serialize()函数中将起点、终点、画笔类型、画笔宽度、画笔颜色变量进行序列化。
2.5.3矩形序列化
与手划线序列化做相似的处理,只是对应好相应的类及相应的成员函数。
在CRectangle类Serialize()函数中将起点、终点、画笔类型、画笔宽度、画笔颜色、画刷类型进行序列化。
2.5.4椭圆序列化
与矩形序列化做相似的处理,只是对应好相应的类及相应的成员函数。
在CRectangle类Serialize()函数中将起点、终点、画笔类型、画笔宽度、画笔颜色、画刷类型进行序列化。
2.5.5字体序列化
7
唐山学院课程设计
与上相同,在CFonttext类Serialize()函数中将字体、文字颜色、位置、字符串进行序列化。
未能实现。
2.6附加模块
2.6.1添加画笔、画刷、橡皮
首先在资源视图的图形工具栏中添加三个按钮,分别手绘画笔、画刷、橡皮的按钮图标,通过类向导分别填加画笔、画刷、橡皮的COMMOND消息处理函数,分别填写代码设置shape为5,shape为6,shape为7。
画笔、画刷、橡皮其实就是绘制不同样式的手划线,按照绘制手划线的方式添加代码,画笔与手划线绘制相同,画刷要将创建的画笔宽度设为6,画笔类型设为PS_SOLID,其他不变,橡皮要将画笔宽度设为4,画笔类型设为PS_SOLID,画笔颜色设为白色,其他不变。
在资源视图中插入三个光标cursor,分别手绘画笔、画刷、橡皮的光标,在视图类CMyDrawView的鼠标移动处理函数OnMouseMove()中添加设置光标的代码。如下当shape=5时设置光标:
HCURSOR hCursor=SetCursor(AfxGetApp()->LoadCursor(IDC_CUR_PEN));
在视图类CmyDrawView的构造函数中,初始化shape=5,使得程序运行即为画笔光标。
2.6.2创建颜色工具栏
新建工具栏,添加各种颜色的按钮,第一个为调用颜色通用对话框的按钮,在CmainFrame类的OnCreate()函数中添加创建颜色工具栏的代码,参照系统工具栏的创建方式,通过类向导分别填加各按钮的COMMOND消息处理函数,将对应颜色值赋给m_color,完成颜色的获取。
2.6.3设置工具栏样式
在CmainFrame类的OnCreate()函数中设置图形工具栏和颜色工具栏位置属性分别为CBRS_LEFT、CBRS_BOTTOM,分别将他们放到界面的左方和下方。
分别为工具栏各按钮设置按下凹下和按其他按钮恢复的功能,通过类向导分别为各按钮填加UPDATE_COMMOND_UI的消息处理函数,通过判断按下按钮标志添加如下代码pCmdUI->SetCheck(TRUE)实现按钮按下,pCmdUI->SetCheck(FALSE)实现按钮恢复。2.6.4在状态栏显示鼠标坐标
在资源视图的Sting Table中最后添加ID为ID_POINT,在CmainFrame类中的indicators[]数组第一个元素后添加ID_POINT,在CMyDrawView的鼠标移动处理函数
8
唐山学院课程设计
OnMouseMove()中添加实现代码,利用SetPaneText()函数为对应状态栏添加显示鼠标坐标的字符串。
9
唐山学院课程设计
3参考文献
[1]王育坚.Visual C++面向对象编程教程.第2版.北京:清华大学出版社,2008
[2]侯俊杰.深入浅出MFC.第2版.广东:南方出版社,2007
10
唐山学院课程设计
附录
设置工具栏按钮标志:
void CMyDrawView::Online()//设置图形工具栏按钮标志
{shape=0;
}
void CMyDrawView::Onsline()
{shape=1;
}
void CMyDrawView::Onrectangle()
{shape=2;
}
void CMyDrawView::Ontext()
{shape=4;
}
void CMyDrawView::Onellipse()
{shape=3;
}
void CMyDrawView::Onpen()
{shape=5;
}
void CMyDrawView::Onerase()
{shape=7;
}
void CMyDrawView::Oncolor1()//设置颜色工具栏按钮返回值及标志{m_color=RGB(0,0,0);
}
void CMyDrawView::Oncolor2()
{m_color=RGB(255,255,255);
}
void CMyDrawView::Oncolor3()
{m_color=RGB(128,128,128);
}
void CMyDrawView::Oncolor4()
{m_color=RGB(192,192,192);
11
唐山学院课程设计
}
void CMyDrawView::Oncolor5()
{m_color=RGB(128,0,0);
}
void CMyDrawView::Oncolor6()
{m_color=RGB(255,0,0);
}
void CMyDrawView::Oncolor7()
{m_color=RGB(128,128,0);
}
void CMyDrawView::Oncolor8()
{m_color=RGB(255,255,0);
}
void CMyDrawView::Oncolor9()
{m_color=RGB(0,128,0);
}
void CMyDrawView::Oncolor10()
{m_color=RGB(0,255,0);
}
void CMyDrawView::Oncolor11()
{m_color=RGB(0,128,128);
}
void CMyDrawView::Oncolor12()
{m_color=RGB(0,255,255);
}
void CMyDrawView::Oncolor13()
{m_color=RGB(0,0,128);
}
void CMyDrawView::Oncolor14()
{m_color=RGB(0,0,255);
}
void CMyDrawView::Oncolor15()
{m_color=RGB(128,0,128);
}
void CMyDrawView::Oncolor16()
12
唐山学院课程设计
{m_color=RGB(255,0,255);
}
图形绘制模块:
CMyDrawView::CMyDrawView()
{shape=5;//初始化
pentype=0;
brushtype=8;
penwidth=1;
m_bdragging=false;
m_hcross=AfxGetApp()->LoadStandardCursor(IDC_CROSS);//获取十字光标}
void CMyDrawView::OnLButtonDown(UINT nFlags,CPoint point)
{if(shape!=5&&shape!=6&&shape!=7)
{SetCapture();
::SetCursor(m_hcross);
}
m_ptorigin=point;
m_ptnow=point;
m_bdragging=TRUE;
if(shape==4)
{CText dlg;
if(dlg.DoModal()==IDOK)//调用字体对话框获取字符串
{UpdateData();
stext=dlg.m_text;
CClientDC dc(this);
CMyDrawDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDoc->AddFonttext(&m_fontdlg,m_clrtext,point,stext);//保存文字格式CFont*pfntold=dc.SelectObject(&m_fontdlg);
dc.SetTextColor(m_clrtext);
dc.TextOut(point.x,point.y,stext);
dc.SelectObject(pfntold);
}
}
13
唐山学院课程设计
CView::OnLButtonDown(nFlags,point);
}
void CMyDrawView::OnMouseMove(UINT nFlags,CPoint point)
{
CClientDC dc(this);
if(shape==5)//获取画笔、画刷、橡皮光标
{HCURSOR hCursor=SetCursor(AfxGetApp()->LoadCursor(IDC_CUR_PEN));
}
else if(shape==6)
{HCURSOR hCursor= SetCursor(AfxGetApp()->LoadCursor(IDC_CUR_BRUSH));
}
else if(shape==7)
{HCURSOR hCursor= SetCursor(AfxGetApp()->LoadCursor(IDC_CUR_ERASE));
}
if(m_bdragging)
{CMyDrawDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
CPen pennew,*ppenold;
CBrush brushnew,*pbrushold;
if(shape==0)
{pDoc->AddLine(m_ptorigin,point,pentype,penwidth,m_color);//保存手划线格式
pennew.CreatePen(pentype,penwidth,m_color);//创建一定风格画笔ppenold=dc.SelectObject(&pennew);
dc.MoveTo(m_ptorigin);
dc.LineTo(point);
dc.SelectObject(ppenold);
pennew.DeleteObject();
m_ptorigin=point;
}
if(shape==1)
{int nDrawmdoe=dc.GetROP2();//设置虚画笔
dc.SetROP2(R2_NOTCOPYPEN);
14
唐山学院课程设计
dc.MoveTo(m_ptorigin);
dc.LineTo(m_ptnow);
dc.SetROP2(nDrawmdoe);
dc.MoveTo(m_ptorigin);
dc.LineTo(point);
m_ptnow=point;
}
if(shape==2)
{int type1;
if(brushtype>5)//得到堆画刷类型的变量
{if(brushtype==6)
{type1=BLACK_BRUSH;}
if(brushtype==7)
{type1=WHITE_BRUSH;}
if(brushtype==8)
{type1=NULL_BRUSH;}
if(brushtype==9)
{type1=GRAY_BRUSH;}
if(brushtype==10)
{type1=DKGRAY_BRUSH;}
if(brushtype==11)
{type1=LTGRAY_BRUSH;}
brushnew.CreateStockObject(type1);
pbrushold=dc.SelectObject(&brushnew);
}
else if(brushtype<=5)
{brushnew.CreateHatchBrush(brushtype,m_color);//设置普通画刷pbrushold=dc.SelectObject(&brushnew);
}
int nDrawmdoe=dc.GetROP2();
dc.SetROP2(R2_NOTCOPYPEN);//设置虚画笔
dc.Rectangle(CRect(m_ptorigin,m_ptnow));
dc.SetROP2(nDrawmdoe);
dc.Rectangle(CRect(m_ptorigin,point));
dc.SelectObject(pbrushold);
15
唐山学院课程设计
brushnew.DeleteObject();
m_ptnow=point;
}
if(shape==3)
{//pbrushold=(CBrush*)dc.SelectStockObject(NULL_BRUSH);
if(brushtype>5)//得到堆画刷类型的变量
{int type2;
if(brushtype==6)
type2=BLACK_BRUSH;
if(brushtype==7)
type2=WHITE_BRUSH;
if(brushtype==8)
type2=NULL_BRUSH;
if(brushtype==9)
type2=GRAY_BRUSH;
if(brushtype==10)
type2=DKGRAY_BRUSH;
if(brushtype==11)
type2=LTGRAY_BRUSH;
brushnew.CreateStockObject(type2);
pbrushold=dc.SelectObject(&brushnew);
//pbrushold=(CBrush*)dc.SelectStockObject(brushtype);
}
else if(brushtype<=5)
{brushnew.CreateHatchBrush(brushtype,m_color);
pbrushold=dc.SelectObject(&brushnew);
}
int nDrawmdoe=dc.GetROP2();
dc.SetROP2(R2_NOTCOPYPEN);//设置虚画笔
dc.Ellipse(CRect(m_ptorigin,m_ptnow));
dc.SetROP2(nDrawmdoe);
dc.Ellipse(CRect(m_ptorigin,point));
dc.SelectObject(pbrushold);
brushnew.DeleteObject();
m_ptnow=point;
16
唐山学院课程设计
}
if(shape==5)
{pDoc->AddLine(m_ptorigin,point,pentype,penwidth,m_color);//保存画笔所画线条格式
pennew.CreatePen(pentype,penwidth,m_color);//创建一定风格画笔
ppenold=dc.SelectObject(&pennew);
dc.MoveTo(m_ptorigin);
dc.LineTo(point);
dc.SelectObject(ppenold);
pennew.DeleteObject();
m_ptorigin=point;
}
if(shape==6)
{
pDoc->AddLine(m_ptorigin,point,PS_SOLID,6,m_color);//保存画刷所画线条格式
pennew.CreatePen(PS_SOLID,6,m_color);//创建画刷的风格
ppenold=dc.SelectObject(&pennew);
dc.MoveTo(m_ptorigin);
dc.LineTo(point);
dc.SelectObject(ppenold);
pennew.DeleteObject();
m_ptorigin=point;
}
if(shape==7)
{
pDoc->AddLine(m_ptorigin,PS_SOLID,pentype,4,RGB(255,255,255));//保存橡皮所画线条格式
pennew.CreatePen(PS_SOLID,4,RGB(255,255,255));//创建橡皮的风格
ppenold=dc.SelectObject(&pennew);
dc.MoveTo(m_ptorigin);
dc.LineTo(point);
dc.SelectObject(ppenold);
pennew.DeleteObject();
m_ptorigin=point;
17
唐山学院课程设计
}
}
CView::OnMouseMove(nFlags,point);
}
void CMyDrawView::OnLButtonUp(UINT nFlags,CPoint point)
{
CClientDC dc(this);
if(m_bdragging)
{CMyDrawDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
CPen pennew,*ppenold;
pennew.CreatePen(pentype,penwidth,m_color);//创建一定风格画笔
CBrush brushnew,*pbrushold;
ppenold=dc.SelectObject(&pennew);
if(shape==1)
{pDoc->AddSline(m_ptorigin,point,pentype,penwidth,m_color);//保存直线格式dc.MoveTo(m_ptorigin);
dc.LineTo(point);
}
if(shape==2)
{pDoc->AddRectangle(m_ptorigin,point,brushtype,m_color,pentype,penwidth);//保存矩形格式
if(brushtype>5)//得到堆画刷类型的变量
{int type1;
if(brushtype==6)
type1=BLACK_BRUSH;
if(brushtype==7)
type1=WHITE_BRUSH;
if(brushtype==8)
type1=NULL_BRUSH;
if(brushtype==9)
type1=GRAY_BRUSH;
if(brushtype==10)
type1=DKGRAY_BRUSH;
if(brushtype==11)
18
正在阅读:
VC课程设计说明书06-02
初2010级五月月考.政治05-26
山东省2011年专升本公共事业管理 管理心理学笔记11-28
现代管理理论与方法12-22
win2003IIS安全设置05-06
豆浆对人体6大神奇功效 哪种吃法最营养10-01
数据结构习题与实验指导09-28
基础与提高测试·高中第3册第21章 透镜成像及其应用 提高测试题04-23
桩基工程施工组织方案04-09
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 说明书
- 课程
- 设计
- 薄壁高墩6米大块钢模翻模施工工法
- 廊坊综合体项目定位与物业发展建议报告(世联)
- 2014-2015教科版小学四年级语文上册_期末试卷
- 2013秋华东理工公共关系学2
- 2012年国家职业资格全国统一鉴定时间安排
- 托儿所、幼儿园建筑设计规范
- 浙江大学宁波理工学院单片机短学期报告
- 编辑容易用错的字
- 一年级生字笔顺表
- 紫杉醇治疗恶性肿瘤的研究进展
- 十大经典鸡尾酒 文档
- 行政科年终工作总结2011年12月13日doc
- xx大学与xx公司合作方案书
- 唐海县湿地蟹园改造工程监理实施细则
- (12)2011全国各地100套中考物理试题分类汇编磁现象 电生磁
- 2014年12月N1真题+听力原文
- 孕产妇分娩期的舒适护理
- 浅谈初一学生历史学习良好习惯的培养
- 新版GSP认证整改报告
- 我国对外文化贸易思考