版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程名称计算机图形学课题名称交互式绘图系统专业计算机科学与技术班级0902班学号200903010208姓名陈瑾指导教师刘长松曹燚2012年10月9日
湖南工程学院课程设计任务书课程名称计算机图形学课题交互式绘图系统专业班级计算机0902学生姓名陈瑾学号200903010208指导老师刘长松曹燚审批任务书下达日期2012年9月15日任务完成日期2012年10月9日一、设计内容与设计要求1.设计内容:用橡皮法实现交互式绘图系统。2.设计要求:在屏幕上可以选择不同的命令、来实现不同基本图形的绘制。完成橡皮筋直线,橡皮筋圆,橡皮筋矩形框,多边形裁剪和3阶B样条曲线的作图,且要有比较友好的界面。3.算法提示:首先在屏幕上画出菜单和绘图窗口,显示鼠标。点击相应菜单,点击鼠标,移动鼠标,获取鼠标移动相对位置,画出相应图形。相关变量定义:#define_MOUSE鼠标
#defineCIRCLE1圆#defineLINE2直线
#defineRECTANGLE3矩形
#include"stdio.h"
#include"string.h"
#include"graphics.h"
#include"math.h"
#include<dos.h>
unionREGSinreg,outreg;
structSREGSsr;相关函数:voidmeun(intx,inty,char*str)
{
setcolor(8);
outtextxy(x+5,28,str);
setcolor(15);
line(x,22,x,40);
line(x,22,y,22);
setcolor(8);
line(x,40,y,40);
line(y,22,y,40);
}voiddrawwindows()画窗口
{
setbkcolor(7);/*7*/
setcolor(8);
rectangle(0,20,640,460);
rectangle(0,0,640,20);
setfillstyle(1,1);
floodfill(1,1,8);
rectangle(0,460,640,480);
setfillstyle(1,15);
floodfill(1,461,8);
setcolor(RED);
outtextxy(10,468,"FinishedByXuYuanFei.");
setcolor(15);
line(0,41,640,41);
line(0,459,640,459);
setcolor(8);
line(0,42,640,42);
setcolor(15);
rectangle(610,3,630,17);
setfillstyle(1,7);
floodfill(611,4,15);
setcolor(8);
line(610,17,630,17);
line(630,3,630,17);
line(611,4,628,16);
line(611,16,628,4);
rectangle(2,44,635,459);
setcolor(15);
rectangle(3,45,634,458);
line(611,3,628,15);
line(611,15,628,3);
meun(5,55,"line");
meun(65,165,"rectangle");
meun(175,250,"circle");
meun(260,330,"Bezer");
meun(340,400,"Cut");
}
int_cut()裁剪voidmycircle(doublex,doubley,doubler)画圆
{
doublei;
for(i=0.0;i<360.0;i=i+4)
line(x+r*cos((i+1)/360*3.1415*2),y+r*sin((i+1)/360*3.1415*2),x+r*cos((i+4.0)/360*3.1415*2),y+r*sin((i+4.0)/360*3.1415*2));
}
void_Bezer(inta[3],intb[3],intm)Beizier曲线voidDisplayMouse()显示鼠标{
inreg.x.ax=1;
int86(0x33,&inreg,&outreg);
}voidCloseMouse()关闭鼠标{
inreg.x.ax=2;
int86(0x33,&inreg,&outreg);
}unionREGSDisplayMouseStatus()显示鼠标状态{
inreg.x.ax=3;
int86(0x33,&inreg,&outreg);
returnoutreg;
}voidGetMouseXY(int*x,int*y)得到鼠标位置{
DisplayMouse();
outreg=DisplayMouseStatus();
*x=outreg.x.cx;
*y=outreg.x.dx;
}响应相应函数void_mytreat(intoldx,intoldy,intx,inty)
{
if(num==1)
{
if(flag==LINE)
{
line(px,py,oldx,oldy);
line(px,py,x,y);
}
if(flag==CIRCLE)
{
mycircle(px,py,sqrt((double)((px-oldx)*(px-oldx)+(py-oldy)*(py-oldy))));
mycircle(px,py,sqrt((double)((px-x)*(px-x)+(py-y)*(py-y))));
}
if(flag==RECTANGLE)
{
rectangle(px,py,oldx,oldy);
rectangle(px,py,x,y);
}
}
}二、进度安排第3周星期一8:00——12:00星期二8:00——12:00星期三8:00——12:00星期四8:00——12:00星期五8:00——12:00第4周星期一8:00——12:00附:课程设计报告装订顺序:封面、任务书、目录、正文、附件(A4大小的图纸及程序清单)、评分。正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)。目录概述……………1功能模块的划分………………2主要功能的实现………………3程序调试………4总结……………5附录……………6概述交互式系统:随着计算机绘图技术的广泛应用,交互处理已是必不可少的容。一个交互图形系统使用户能动态的输入坐标位置,指定选择功能,设置交换参数,以及在图形显示期间能够对花面上的某些部分进行修改、删除、增添、存储和在显示操作,且能全部徒手绘图。交互式绘图软件系统都为用户提供了一个交互工作环境,称交互界面。通常在图形显示方式,把屏幕划分为图形区,菜单区和提示区。交互式绘图系统的基本功能一般可归纳为绘图功能、图形编辑、尺寸标准、作图工具、显示功能、询问功能、信息转换、和二次开发工具。橡皮筋技术:橡皮筋技术是在平面上确定一条直线一般是先定下起点再定下终点,最后把起点和终点连成直线。如果要求这条直线能通过平面上某一点或和一已知圆相切,上述方法便不易做得很准确。所谓橡皮筋技术就是在起点确定后,光标移出去定终点时,在屏幕上始终显示一条连接起点和光标中心的直线,这条直线随着光标中心位置的变动而变动,它就像在起点和光标中心之间紧紧地拉着一根橡皮筋,有了这根橡皮筋便比较容易地找到通过一个点或和一个圆相切的直线的位置。功能模块的划分本程序是采用VC6.0编写的一个绘图系统,在屏幕上可以选择不同的命令、来实现不同基本图形和颜色的绘制。通过该系统可以完成橡皮筋直线,橡皮筋圆,橡皮筋矩形框,多边形裁剪和3阶B样条曲线的作图,它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和简易的菜单进行操作,适合简单的画图,对学习用一定的帮助。本程序的功能模块划分如下:1、画点:运行程序后单击“绘图”菜单,选择“点”后,用鼠标在视图中任意一个地方,点击下鼠标左键便可在视图中出现一点。2、画直线:运行程序后单击“绘图”菜单,选择“直线”后,用鼠标左键在视图框中任意一地方,用来确定直线的起始点,点击鼠标左键不松,在视图框中随意拉动鼠标便可看见一直线随鼠标的变动而变动,当松去左键时,便在视图中画出一条直线。3、画矩形:运行程序后单击“绘图”菜单,选择“矩形”后,用鼠标左键在视图框中随意点击任意一个地方,用来确定矩形的起始点,然后按住鼠标左键不松,随意改变鼠标点的位置用鼠标,会有虚框显示,松下鼠标左键,即可在视图中画出一个矩形。4、画圆:运行程序后单击“绘图”菜单,选择“圆”后,用鼠标左键在视图框中随意点击任意一个地方,用来确定圆的起始点,然后,按住左键不松,在视图框任意拉动鼠标,便可看到随鼠标移动的圆,当松去左键时,便可以在视图框中确定圆行,这样便画出了一个圆。5、设置线型:运行程序后单击“绘图”菜单,选择“设置”后,跟据弹出的对话框和实际的需求选择画直线,画矩形,画圆的线型,有“实线”,“虚线”,和“点线”,选定后点击确定即可。6、设置颜色:运行程序后单击“绘图”菜单,选择“颜色”后,根据弹出的调色板选择自己想要的颜色,然后点击确定即可。主要功能的实现:编辑对话框:点击ResourceView中的Menu,双击其内部的IDR-MAINFRAME,如下图:便可以编辑菜单选项了。右击各个菜单,选择ClassWizard…弹出对话框如下:对各个菜单添加功能后,点击EditCode,便可以编写函数,其函数如下:voidCGraphicView::OnDot()//点{ //TODO:Addyourcommandhandlercodehere m_nDrawType=1;}voidCGraphicView::OnLine()//直线{ //TODO:Addyourcommandhandlercodehere m_nDrawType=2;}voidCGraphicView::OnRectangle()//矩形{ //TODO:Addyourcommandhandlercodehere m_nDrawType=3;}voidCGraphicView::OnEllipse()//圆{ //TODO:Addyourcommandhandlercodehere m_nDrawType=4;}画图功能实现:确定起始点,确定图形;voidCGraphicView::OnLButtonDown(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefaultm_ptOrigin=point;//Æðµã×ø±ê m_endpoint=m_ptOrigin; linepointnum=1; CView::OnLButtonDown(nFlags,point);}voidCGraphicView::OnLButtonUp(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefault linepointnum=0; CClientDCdc(this);CPenpen(m_nLineStyle,0,m_clr);dc.SelectObject(&pen); CBrush*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//͸Ã÷µÄ»Ë¢ dc.SelectObject(pBrush); switch(m_nDrawType){ case1: dc.SetPixel(point,m_clr); break; case2: dc.MoveTo(m_ptOrigin); dc.LineTo(point); break; case3: dc.Rectangle(CRect(m_ptOrigin,point)); break; case4: if(abs(point.y-m_ptOrigin.y)>abs(point.x-m_ptOrigin.x)) { if(point.y>m_ptOrigin.y){ dc.Ellipse(CRect(m_ptOrigin.x,m_ptOrigin.y,point.x,m_ptOrigin.y+abs(point.x-m_ptOrigin.x))); } else { dc.Ellipse(CRect(m_ptOrigin.x,m_ptOrigin.y,point.x,m_ptOrigin.y-abs(point.x-m_ptOrigin.x))); } } else { if(point.x>m_ptOrigin.x) { dc.Ellipse(CRect(m_ptOrigin.x,m_ptOrigin.y,m_ptOrigin.x+abs(point.y-m_ptOrigin.y),point.y)); } else { dc.Ellipse(CRect(m_ptOrigin.x,m_ptOrigin.y,m_ptOrigin.x-abs(point.y-m_ptOrigin.y),point.y)); } } // dc.Ellipse(CRect(m_ptOrigin.x,m_ptOrigin.y,point.x,point.y)); break; } CGraph*pGraph=newCGraph(m_nDrawType,m_ptOrigin,point,m_clr,m_nLineStyle); m_ptrArray.Add(pGraph);CView::OnLButtonUp(nFlags,point);}线条设置:voidCGraphicView::OnSetting(){ //TODO:Addyourcommandhandlercodehere CSettingDlgdlg; dlg.m_nLineStyle=m_nLineStyle;if(IDOK==dlg.DoModal()){ m_nLineStyle=dlg.m_nLineStyle; } }颜色设置:voidCGraphicView::OnColor(){ //TODO:Addyourcommandhandlercodehere CColorDialogdlg; dlg.m_cc.Flags|=CC_RGBINIT|CC_FULLOPEN;dlg.m_cc.rgbResult=m_clr; if(IDOK==dlg.DoModal()) { m_clr=dlg.m_cc.rgbResult; }}程序调试:1、画点的实现:在“绘图”菜单中选择“点”:操作结果如下显示:2、画点的实现:在“绘图”菜单中选择“直线”:操作结果如下显示:2、画点的实现:在“绘图”菜单中选择“矩形”:操作结果如下显示:3、画点的实现:在“绘图”菜单中选择“圆”:操作结果如下显示:4、线型实现:在“绘图”菜单中选择“设置”:操作结果如下显示:根据所需,选择相对的线型。4、线型实现:在“绘图”菜单中选择“设置”:操作结果如下显示:选择想要的颜色即可。选择虚线和红色,测试绘图如下:五、总结:这次课程设计的课题是交互式绘图系统,通过这次课程设计初步了解了橡皮筋技术的基本概念以及它在交互式绘图过程中的作用,使用橡皮筋技术构造直线、矩形和圆的操作过程和方法。经过这次课程设计,不但巩固了上学期在课堂上学的知识,而且还学到了一些上机的基本操作,提高了动手能力。由于这门课程是上学期开的,经过了一个暑假,对于这方面的相关知识有些不太熟悉了,这次课程设计给了我一个很好的温习机会,在做课程设计时不尽尽只是完成这个任务,使得我重新找出了相关资料,又认认真真的将需要用到的一些知识巩固了,加深了印象同时锻炼了动手的能力。在整个过程中,通过解决课程设计中出现的问题,提高了解决问题的能力。总之,在老师和同学的帮助下还算顺利的完成了橡皮筋直线、橡皮筋圆、橡皮筋矩形框、多边形裁剪和3阶B 曲线作图,并且有简单的图形界面。虽然只是一次短暂的课程设计,但受益匪浅。附录:1、参考文献:(1)唐泽圣周嘉玉李新友编著《计算机图形学基础》,北京清华大学出版社1995;(2)汝传邹北软编著《计算机图形学》,北京人名邮电出版社2002;(3)网络资料。2、源代码:CGraph类中的函数:#if!defined(AFX_GRAPH_H__40F8ED15_A3A1_4BE2_84D1_949DCCACA01A__INCLUDED_)#defineAFX_GRAPH_H__40F8ED15_A3A1_4BE2_84D1_949DCCACA01A__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000classCGraph{public:CPointm_ptOrigin;CPointm_ptEnd; UINTm_nDrawType;COLORREFm_clr; intm_nLineStyle; CGraph(); CGraph(UINTm_nDrawType,CPointm_ptOrigin,CPointm_ptEnd,COLORREFm_clr,intm_nLineStyle); virtual~CGraph();};#endif//!defined(AFX_GRAPH_H__40F8ED15_A3A1_4BE2_84D1_949DCCACA01A__INCLUDED_)//Graph.cpp:implementationoftheCGraphclass.////////////////////////////////////////////////////////////////////////#include"stdafx.h"#include"Graphic.h"#include"Graph.h"#ifdef_DEBUG#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#definenewDEBUG_NEW#endif////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////CGraph::CGraph(){}CGraph::CGraph(UINTm_nDrawType,CPointm_ptOrigin,CPointm_ptEnd,COLORREFm_clr,intm_nLineStyle){this->m_nDrawType=m_nDrawType;this->m_ptOrigin=m_ptOrigin;this->m_ptEnd=m_ptEnd;this->m_clr=m_clr;this->m_nLineStyle=m_nLineStyle;}CGraph::~CGraph(){}CGraphicView类中的函数://GraphicView.cpp:implementationoftheCGraphicViewclass//#include"stdafx.h"#include"Graphic.h"#include"SettingDlg.h"#include"GraphicDoc.h"#include"GraphicView.h"#include"Graph.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CGraphicViewIMPLEMENT_DYNCREATE(CGraphicView,CView)BEGIN_MESSAGE_MAP(CGraphicView,CView) //{{AFX_MSG_MAP(CGraphicView) ON_COMMAND(ID_DOT,OnDot) ON_COMMAND(IDM_LINE,OnLine) ON_COMMAND(IDM_RECTANGLE,OnRectangle) ON_COMMAND(IDM_ELLIPSE,OnEllipse) ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_COMMAND(IDM_SETTING,OnSetting) ON_COMMAND(IDM_COLOR,OnColor) ON_WM_MOUSEMOVE() //}}AFX_MSG_MAP //Standardprintingcommands ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview)END_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CGraphicViewconstruction/destructionCGraphicView::CGraphicView(){ //TODO:addconstructioncodeherem_nDrawType=0;m_ptOrigin=0;m_nLineStyle=0;m_clr=RGB(0,0,0);linepointnum=0;}CGraphicView::~CGraphicView(){}BOOLCGraphicView::PreCreateWindow(CREATESTRUCT&cs){ //TODO:ModifytheWindowclassorstylesherebymodifying //theCREATESTRUCTcs returnCView::PreCreateWindow(cs);}///////////////////////////////////////////////////////////////////////////////CGraphicViewdrawingvoidCGraphicView::OnDraw(CDC*pDC){ CGraphicDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere //CPenpen(m_nLineStyle,m_nLineWidth,m_clr);//pDC->SelectObject(&pen); CBrush*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));pDC->SelectObject(pBrush); for(inti=0;i<m_ptrArray.GetSize();i++) { CPenpen(((CGraph*)m_ptrArray.GetAt(i))->m_nLineStyle,0,((CGraph*)m_ptrArray.GetAt(i))->m_clr);pDC->SelectObject(&pen); switch(((CGraph*)m_ptrArray.GetAt(i))->m_nDrawType) { case1: pDC->SetPixel(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd,RGB(0,0,0)); break; case2: pDC->MoveTo(((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin); pDC->LineTo(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd); break; case3: pDC->Rectangle(CRect(((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin, ((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd)); break; case4: //((CGraph*)m_ptrArray.GetAt(i))->m_ptEndpoint//((CGraph*)m_ptrArray.GetAt(i))->m_ptOriginm_ptOrigin if(abs(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.y-((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.y)>abs(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.x-((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.x)) { if(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.y>((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.y) { pDC->Ellipse(CRect(((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.x,((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.y,((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.x,((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.y+abs(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.x-((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.x))); } else { pDC->Ellipse(CRect(((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.x,((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.y,((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.x,((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.y-abs(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.x-((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.x))); } } else { if(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.x>((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.x) { pDC->Ellipse(CRect(((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.x,((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.y,((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.x+abs(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.y-((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.y),((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.y)); } else { pDC->Ellipse(CRect(((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.x,((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.y,((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.x-abs(((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.y-((CGraph*)m_ptrArray.GetAt(i))->m_ptOrigin.y),((CGraph*)m_ptrArray.GetAt(i))->m_ptEnd.y)); } } break; } }}///////////////////////////////////////////////////////////////////////////////CGraphicViewprintingBOOLCGraphicView::OnPreparePrinting(CPrintInfo*pInfo){ //defaultpreparation returnDoPreparePrinting(pInfo);}voidCGraphicView::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/){ //TODO:addextrainitializationbeforeprinting}voidCGraphicView::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/){ //TODO:addcleanupafterprinting}///////////////////////////////////////////////////////////////////////////////CGraphicViewdiagnostics#ifdef_DEBUGvoidCGraphicView::AssertValid()const{ CView::AssertValid();}voidCGraphicView::Dump(CDumpContext&dc)const{ CView::Dump(dc);}CGraphicDoc*CGraphicView::GetDocument()//non-debugversionisinline{ ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGraphicDoc))); return(CGraphicDoc*)m_pDocument;}#endif//_DEBUG///////////////////////////////////////////////////////////////////////////////CGraphicViewmessagehandlersvoidCGraphicView::OnDot(){ //TODO:Addyourcommandhandlercodehere m_nDrawType=1;}voidCGraphicView::OnLine(){ //TODO:Addyourcommandhandlercodehere m_nDrawType=2;}voidCGraphicView::OnRectangle(){ //TODO:Addyourcommandhandlercodehere m_nDrawType=3;}voidCGraphicView::OnEllipse(){ //TODO:Addyourcommandhandlercodehere m_nDrawType=4;}voidCGraphicView::OnLButtonDown(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefaultm_ptOrigin=point;//Æðµã×ø±ê m_endpoint=m_ptOrigin; linepointnum=1; CView::OnLButtonDown(nFlags,point);}voidCGraphicView::OnLButtonUp(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefault linepointnum=0; CClientDCdc(this);CPenpen(m_nLineStyle,0,m_clr);dc.SelectObject(&pen); CBrush*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//͸Ã÷µÄ»Ë¢ dc.SelectObject(pBrush); switch(m_nDrawType){ case1: dc.SetPixel(point,m_clr); break; case2: dc.MoveTo(m_ptOrigin); dc.LineTo(point); break; case3: dc.Rectangle(CRect(m_ptOrigin,point)); break; case4: if(abs(point.y-m_ptOrigin.y)>abs(point.x-m_ptOrigin.x)) { if(point.y>m_ptOrigin.y){ dc.Ellipse(CRect(m_ptOrigin.x,m_ptOrigin.y,point.x,m_ptOrigin.y+abs(point.x-m_ptOrigin.x))); } else { dc.Ellipse(CRect(m_ptOrigin.x,m_ptOrigin.y,point.x,m_ptOrigin.y-abs(point.x-m_ptOrigin.x))); } } else { if(point.x>m_ptOrigin.x) { dc.Ellipse(CRect(m_ptOrigin.x,m_ptOrigin.y,m_ptOrigin.x+abs(point.y-m_ptOrigin.y),point.y)); } else { dc.Ellipse(CRect(m_ptOrigin.x,m_ptOrigin.y,m_ptOrigin.x-abs(point.y-m_ptOrigin.y),point.y)); } } // dc.Ellipse(CRect(m_ptOrigin.x,m_ptOrigin.y,point.x,point.y)); break; } CGraph*pGraph=newCGraph(m_nDrawType,m_ptOrigin,point,m_clr,m_nLineStyle); m_ptrArray.Add(pGraph);CView::OnLButtonUp(nFlags,point);}voidCGraphicView::OnSetting(){ //TODO:Addyourcommandhandlercodehere CSettingDlgdlg; dlg.m_nLineStyle=m_nLineStyle;if(IDOK==dlg.DoModal()){ m_nLineStyle=dlg.m_nLineStyle; } }voidCGraphicView::OnColor(){ //TODO:Addyourcommandhandlercodehere CColorDialogdlg; dlg.m_cc.Flags|=CC_RGBINIT|CC_FULLOPEN;dlg.m_cc.rgbResult=m_clr; if(IDOK==dlg.DoModal()) { m_clr=dlg.m_cc.rgbResult; }}voidCGraphicView::OnMouseMove(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefault CClientDCdc(this); dc.SetROP2(R2_NOT); //ÏðƤ½î¼¼Êõ»æͼ// CPenpen(m_nLineStyle,0,m_clr);//dc.SelectObject(&pen); CBrush*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//͸Ã÷µÄ»Ë¢ dc.SelectObject(pBrush); switch(m_nDrawType) { case2: { if(linepointnum==1) { dc.MoveTo(m_ptOrigin);//²Á³ý dc.LineTo(m_endpoint); m_endpoint=poi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度高校毕业生就业实习全面合作协议3篇
- 二零二五年钢结构工程材料居间供应协议2篇
- 二零二五年智能家居设备OEM生产与技术支持协议3篇
- 二零二五年度施工现场安全防护责任施工合同汇编3篇
- 【逆袭寒假】第9天拓展篇写人类阅读-统编版五年级语文逆袭寒假练习本(含答案)
- 二零二五年度夫妻离婚后子女抚养权变更协议书3篇
- 二零二五年政府数据中心门卫保密聘用合同2篇
- 二零二五年酒店设备购置抵押融资合同范本3篇
- 二零二五年建设工程施工合同的工程质量标准与验收条件3篇
- 二零二五年度话剧巡演:演员选拔与聘用合同3篇
- 辐射安全知识培训课件
- 2023-2024学年八年级(上)期末数学试卷
- 落实《中小学德育工作指南》制定的实施方案(pdf版)
- 光伏项目施工总进度计划表(含三级)
- 气候变化与林业碳汇智慧树知到期末考试答案2024年
- 挪用公款还款协议书范本
- 建设工程施工合同 GF—2017—0201
- 汽车吊吊装计算
- 河南省集中供热定价成本监审办法
- 坠床跌倒处理流程图
- CSFB业务流程中(MME和CSFBMSC)寻呼参数设置研究
评论
0/150
提交评论