静态分割简单画图程序课外实践报告.docx

上传人:b****3 文档编号:5449476 上传时间:2022-12-16 格式:DOCX 页数:13 大小:78.46KB
下载 相关 举报
静态分割简单画图程序课外实践报告.docx_第1页
第1页 / 共13页
静态分割简单画图程序课外实践报告.docx_第2页
第2页 / 共13页
静态分割简单画图程序课外实践报告.docx_第3页
第3页 / 共13页
静态分割简单画图程序课外实践报告.docx_第4页
第4页 / 共13页
静态分割简单画图程序课外实践报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

静态分割简单画图程序课外实践报告.docx

《静态分割简单画图程序课外实践报告.docx》由会员分享,可在线阅读,更多相关《静态分割简单画图程序课外实践报告.docx(13页珍藏版)》请在冰豆网上搜索。

静态分割简单画图程序课外实践报告.docx

静态分割简单画图程序课外实践报告

程序开发框架技术课外实践报告

 

项目名称:

静态分割窗口简单画图程序

所在班级:

指导教师:

起止时间

项目基本信息

项目名称

静态分割窗口简单画图程序

项目简介

在信息技术的催化之下,世界经济的变革已经进入了加速状态。

对于图形和文本的操作,掌握它的基本原理对于我们来说也是非常重要的。

而我们的windows就是一个图形操作系统,它使用图形设备接口GDI进行图形和文本的输出。

而文档和视图结构式MFC的基石,它能够把管理数据的程序代码和负责数据显示的程序代码分离开来。

静态分割简单画图程序,结合了简单画图程序和视图分割窗口。

通过左边视图窗口的一些控件实现对右边窗口的操作。

项目中还对状态栏进行了一些设置,有计时器和显示。

 

一、问题描述及分析

(1)创建对话框作为左分割窗口,包括图形选择按钮,颜色选择按钮和画刷选择按钮。

(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;

pDoc->UpdateAllViews(this);

}

voidCChooseView:

:

OnRectangle()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();

pDoc->m_choose=1;

pDoc->UpdateAllViews(this);

}

voidCChooseView:

:

OnRed()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();

pDoc->m_color=0;

pDoc->UpdateAllViews(this);

}

voidCChooseView:

:

OnGreen()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();

pDoc->m_color=1;

pDoc->UpdateAllViews(this);

}

voidCChooseView:

:

OnBlue()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();

pDoc->m_color=2;

pDoc->UpdateAllViews(this);

}

voidCChooseView:

:

Onsolid()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();

pDoc->m_brush=0;

pDoc->UpdateAllViews(this);

}

voidCChooseView:

:

Onbdiag()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();

pDoc->m_brush=2;

pDoc->UpdateAllViews(this);

}

voidCChooseView:

:

Oncross()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();

pDoc->m_brush=1;

pDoc->UpdateAllViews(this);

}

voidCChooseView:

:

Onvert()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();

pDoc->m_brush=3;

pDoc->UpdateAllViews(this);

}

voidCChooseView:

:

OnRoundrect()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();

pDoc->m_choose=0;

pDoc->UpdateAllViews(this);

}

voidCChooseView:

:

OnUpdatePrompt(CCmdUI*pCmdUI)

{

CLi7_7Doc*pDoc=(CLi7_7Doc*)GetDocument();

CMainFrame*pMainFrame=(CMainFrame*)AfxGetMainWnd();

CStatusBar*pStatusBar=&pMainFrame->m_wndStatusBar;

CStringstr,str1,str2,str3;

//根据用户选择确定状态栏提示信息

if(pDoc->m_choose==0)

str1="圆角矩形,";

elseif(pDoc->m_choose==1)

str1="矩形,";

else

str1="圆形,";

if(pDoc->m_color==0)

str2="红色,";

elseif(pDoc->m_color==1)

str2="绿色,";

elsestr2="蓝色,";

if(pDoc->m_brush==0)

str3="实心画刷";

elseif(pDoc->m_brush==1)

str3="水平垂直交叉";

elseif(pDoc->m_brush==2)

str3="左下角到右上角";

else

str3="垂直线";

str=str1+str2+str3;

pStatusBar->SetPaneText(1,str);//显示提示信息

}

(2)CLi7_7View

voidCLi7_7View:

:

OnLButtonDown(UINTnFlags,CPointpoint)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

m_ptorigin=m_ptend=point;

draw=TRUE;

CView:

:

OnLButtonDown(nFlags,point);

}

voidCLi7_7View:

:

OnLButtonUp(UINTnFlags,CPointpoint)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

draw=FALSE;

CView:

:

OnLButtonUp(nFlags,point);

}

voidCLi7_7View:

:

OnMouseMove(UINTnFlags,CPointpoint)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

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);//创建画笔

PenOld=dc.SelectObject(&PenNew);//选用画笔 

}

break;

case2:

{

PenColor=RGB(0,0,255);

PenNew.CreatePen(PS_DOT,1,PenColor);//创建画笔

PenOld=dc.SelectObject(&PenNew);//选用画笔 

}

break;

}

switch(pDoc->m_brush)

{

case0:

{

BrushNew.CreateSolidBrush(RGB(20,192,192));

BrushOld=dc.SelectObject(&BrushNew);

}

break;

case1:

{

BrushNew.CreateHatchBrush(HS_CROSS,RGB(128,128,0));

BrushOld=dc.SelectObject(&BrushNew);

}

break;

case2:

{

BrushNew.CreateHatchBrush(HS_BDIAGONAL,RGB(0,0,255));

BrushOld=dc.SelectObject(&BrushNew);

}

break;

case3:

{

BrushNew.CreateHatchBrush(HS_VERTICAL,RGB(255,255,0));

BrushOld=dc.SelectObject(&BrushNew);

}

break;

}

if(draw==TRUE)

{

switch(pDoc->m_choose)

{

case0:

{

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);

dc.RoundRect(m_ptorigin.x,m_ptorigin.y,m_ptend.x,m_ptend.y,30,30);

break;

}

break;

case1:

{

CRectrect(m_ptorigin,m_ptend);

dc.Rectangle(&rect);

m_ptorigin=point;

rect.SetRect(m_ptorigin,m_ptend);

dc.Rectangle(&rect);

}

break;

case2:

{

CRectrect(m_ptorigin,m_ptend);

dc.Ellipse(&rect);

m_ptorigin=point;

rect.SetRect(m_ptorigin,m_ptend);

dc.Ellipse(&rect);

}

break;

}

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)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

CTimetime;

time=CTime:

:

GetCurrentTime();

CStrings=time.Format("%H:

%M:

%S");

m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s);

CFrameWnd:

:

OnTimer(nIDEvent);

}

voidCMainFrame:

:

OnClose()

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

KillTimer

(1);//关闭计时器

CFrameWnd:

:

OnClose();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1