静态分割简单画图程序课外实践报告文档格式.docx
- 文档编号:18436985
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:13
- 大小:78.46KB
静态分割简单画图程序课外实践报告文档格式.docx
《静态分割简单画图程序课外实践报告文档格式.docx》由会员分享,可在线阅读,更多相关《静态分割简单画图程序课外实践报告文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
(2)例如当你选择图形为圆角矩形颜色为红色,画刷为实心画刷时,在右边视图窗口画出相应的图形,用橡皮筋效果实现。
给它加了三个消息映射函数OnLButtonUP(),OnLButtonDown(),OnMouseMove()。
(3)当你选择相应的图形,颜色,画刷时下面状态栏也会显示你选择的信息,还有一个计时器显示当前时间。
二、功能模块及结构描述
(1)自己创建视图窗口类CChooseView
{
创建对话框加入相应的控件,在状态栏下显示你在对话框中所选择的内容。
}
(2)默认视图窗口类CLi7_7View
根据左边图形、颜色、画刷的选择,在右边窗口画出相应图形。
当选择左边视图的例如圆角矩形,颜色红色,画刷实心画刷,可以再右边用橡皮筋效果画出相应图形。
(3)对状态栏设置CMainFrame
在状态栏窗格中有计时器显示时间,进行分割窗口
………
二、主要流程描述
三、使用说明
程序运行后,进入:
在如上所示的界面下进行基本的操作。
四、问题及解决方法
⑴加画笔颜色时候老是出错,解决方法把画笔画刷设置的代码都写在OnMouseMove函数中
⑵状态栏显示左边窗口所选信息时,出现pMainFrame不能访问m_wndStatusBar的错误,解决方法把m_wndStatusBarg改为公有成员变量
⑶单独选其中一个或多个单选按钮程序不能单独运行,如只选圆角矩形按钮就去画图不能进行程序出错,未解决
五、课外实践总结
随着当今社会向信息化的发展,当然对画图工具的应用也越来越信息化程序化,特别是向windows操作系统这样的图形操作系统,这就需要我们对程序中的知识进行继续研究和学习。
不断提高自己的操作能力和逻辑能力。
程序中也有许多不足的地方,有些想实现的功能并未能实现。
对课本理论知识没有熟练地掌握好,有没有及时进行操作巩固,所以很多知识操作有点生疏,写出的程序效果并不尽如人意。
这个过程中虽然挺困难的,经常就会被一个小小的问题卡住,可能要几个小时或是一天以上才能解决,但我坚持下来了,同时也锻炼了我的独立思考能力和对手操作能力。
经过这次的课程设计我们明白遇到困难不放弃的重要性,知道了实践能力的重要性。
感觉自己能力非常有限,需呀学习的知识还很多。
六、主要源代码
(1)CChooseView类
voidCChooseView:
:
OnEllipse()
//TODO:
Addyourcontrolnotificationhandlercodehere
CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();
pDoc->
m_choose=2;
UpdateAllViews(this);
OnRectangle()
m_choose=1;
OnRed()
m_color=0;
OnGreen()
m_color=1;
OnBlue()
m_color=2;
Onsolid()
m_brush=0;
Onbdiag()
m_brush=2;
Oncross()
m_brush=1;
Onvert()
m_brush=3;
OnRoundrect()
m_choose=0;
OnUpdatePrompt(CCmdUI*pCmdUI)
CMainFrame*pMainFrame=(CMainFrame*)AfxGetMainWnd();
CStatusBar*pStatusBar=&
pMainFrame->
m_wndStatusBar;
CStringstr,str1,str2,str3;
//根据用户选择确定状态栏提示信息
if(pDoc->
m_choose==0)
str1="
圆角矩形,"
;
elseif(pDoc->
m_choose==1)
矩形,"
else
str1="
圆形,"
m_color==0)
str2="
红色,"
m_color==1)
绿色,"
elsestr2="
蓝色,"
m_brush==0)
str3="
实心画刷"
m_brush==1)
水平垂直交叉"
elseif(pDoc->
m_brush==2)
str3="
左下角到右上角"
else
垂直线"
str=str1+str2+str3;
pStatusBar->
SetPaneText(1,str);
//显示提示信息
(2)CLi7_7View
voidCLi7_7View:
OnLButtonDown(UINTnFlags,CPointpoint)
Addyourmessagehandlercodehereand/orcalldefault
m_ptorigin=m_ptend=point;
draw=TRUE;
CView:
OnLButtonDown(nFlags,point);
OnLButtonUp(UINTnFlags,CPointpoint)
draw=FALSE;
OnLButtonUp(nFlags,point);
OnMouseMove(UINTnFlags,CPointpoint)
CClientDCdc(this);
dc.SetROP2(R2_NOTXORPEN);
CLi7_7Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
CPen*PenOld,PenNew;
CBrushBrushNew,*BrushOld;
COLORREFPenColor=RGB(0,0,0);
switch(pDoc->
m_color)
{
case0:
{
PenColor=RGB(255,0,0);
PenNew.CreatePen(PS_SOLID,2,PenColor);
//创建画笔
PenOld=dc.SelectObject(&
PenNew);
//选用画笔
}
break;
case1:
PenColor=RGB(0,255,0);
PenNew.CreatePen(PS_DASH,1,PenColor);
//创建画笔
case2:
PenColor=RGB(0,0,255);
PenNew.CreatePen(PS_DOT,1,PenColor);
}
m_brush)
{
BrushNew.CreateSolidBrush(RGB(20,192,192));
BrushOld=dc.SelectObject(&
BrushNew);
break;
BrushNew.CreateHatchBrush(HS_CROSS,RGB(128,128,0));
BrushNew.CreateHatchBrush(HS_BDIAGONAL,RGB(0,0,255));
case3:
BrushNew.CreateHatchBrush(HS_VERTICAL,RGB(255,255,0));
if(draw==TRUE)
switch(pDoc->
m_choose)
{
CRectrect(m_ptorigin,m_ptend);
dc.RoundRect(m_ptorigin.x,m_ptorigin.y,m_ptend.x,m_ptend.y,30,30);
m_ptorigin=point;
rect.SetRect(m_ptorigin,m_ptend);
break;
}
case1:
CRectrect(m_ptorigin,m_ptend);
dc.Rectangle(&
rect);
rect.SetRect(m_ptorigin,m_ptend);
case2:
dc.Ellipse(&
m_ptorigin=point;
dc.SelectObject(PenOld);
//还原画笔
PenNew.DeleteObject();
//释放画笔*/
dc.SelectObject(BrushOld);
BrushNew.DeleteObject();
CView:
OnMouseMove(nFlags,point);
(3)CMainFrame
BOOLCMainFrame:
OnCreateClient(LPCREATESTRUCTlpcs,CCreateContext*pContext)
VERIFY(m_wndSplitter.CreateStatic(this,1,2));
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CChooseView),CSize(0,0),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CLi7_7View),CSize(0,0),pContext);
CChooseView*pWnd=(CChooseView*)m_wndSplitter.GetPane(0,0);
CSizesize=pWnd->
GetTotalSize();
m_wndSplitter.SetColumnInfo(0,size.cx,1);
returntrue;
voidCMainFrame:
OnTimer(UINTnIDEvent)
CTimetime;
time=CTime:
GetCurrentTime();
CStrings=time.Format("
%H:
%M:
%S"
);
m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s);
CFrameWnd:
OnTimer(nIDEvent);
OnClose()
KillTimer
(1);
//关闭计时器
OnClose();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 静态 分割 简单 画图 程序 课外 实践 报告