c++第5章 图形绘制
- 格式:doc
- 大小:1.50 MB
- 文档页数:55
第5章绘制平面图形平面图形是由若干线段(直线或圆弧)封闭连接组合而成。
各组成线段之间可能彼此相交、相切或等距。
要用AutoCAD正确、快速地绘制一个平面图形,特别是较复杂的平面图形,必须首先对平面图形作尺寸分析和线段分析,然后按适当的方法、步骤画出。
与手工绘制平面图形相比,用AutoCAD绘制平面图形需要较高的作图技巧,要用到一些特殊的命令和一些特别的作图方法。
本章首先以图5-1所示的挂轮架为例,讲述平面图形的尺寸分析和线段分析的方法,以及平面图形的作图步骤,然后再通过“典型题目实训指导”一节,分析并绘制两个平面图形,帮助读者掌握用AutoCAD绘制平面图形的方法和技巧。
图5-1 挂轮架平面图形5.1 平面图形的尺寸分析按照尺寸在平面图形中所起的作用,可以将平面图形的尺寸分为定形尺寸和定位尺寸两类。
而要想确定平面图形中各组成线段的上下、左右的相对位置,则必须引入机械制图中被称为尺寸基准的概念。
1. 定形尺寸确定平面图形中各几何元素形状大小的尺寸称为定形尺寸。
如图5-2(a)所示。
2. 定位尺寸用于确定圆心、线段等几何元素在平面图形中所处位置的尺寸称为定位尺寸。
如图5-2(b)所示。
3. 尺寸基准确定平面图形中尺寸位置的点、线等几何元素称为尺寸基准,尺寸基准简称为基准。
一般以平面图形中的对称中心线、圆心、轮廓直线等作为尺寸基准,定位尺寸应以尺寸基准作为标注尺寸的起点。
一个平面图形应有水平和垂直两个方向的尺寸基准,对于较复杂的平面图形,在同一方向上往往有几个基准,其中一个为主要基准,其余为辅助基准。
如图5-1中Φ112的圆心和垂直中心线就是108和30°等尺寸的基准。
(a) 定形尺寸(b) 定位尺寸图5-2 挂轮架平面图形的尺寸分析5.2 平面图形的线段分析平面图形中的线段通常指直线、圆弧和圆。
平面图形线段分析的实质是通过分析线段的尺寸情况来区分不同类型的线段,并由此确定各线段的作图顺序。
VC++第5章图形绘制第5章图形绘制在Visual C++6.0中,掌握图形程序设计⽅法是⾮常重要的。
因为图形在任何⼀个可视化⼯程项⽬中都是不可缺少的。
CDC(设备环境)类封装了图形绘制所需要的各种操作。
本章我们将通过实际例⼦和较详细的阐述,来了解和掌握如何使⽤设备环境类(CDC)及图形设备接⼝(GDI)进⾏图形绘制。
5.1 设备环境与设备环境类(CDC)5.1.1 设备环境设备环境也称设备上下⽂(Device Context,简称DC),是计算机物理设备的代表,也是图形设备接⼝的主要组成部分。
由于Windows是⼀个与设备⽆关的操作系统,即Windows不允许直接访问硬件,如果⽤户想将⽂本和图形绘制到显⽰器或其它设备中去,必须通过“设备环境”这个抽象层与硬件进⾏通信,设备上下⽂对象的作⽤就是实现Windows的设备⽆关性,任何向屏幕上进⾏输出的功能都要间接地通过它来完成。
设备上下⽂是Windows的⼀种数据结构,它包含了有关如显⽰器或打印机等设备的绘图属性信息。
所有绘画都是通过设备上下⽂对象来实现的,该对象封装了Windows 的画线、图形和⽂本的API函数。
设备上下⽂允许在Windows下独⽴于设备的绘画。
设备上下⽂不仅能够被⽤来在屏幕上绘画,它也可以将绘画输出到打印机和图元⽂件中。
5.1.2 设备环境类设备环境类CDC直接继承于CObject类,该类定义了⼀类设备对象。
CDC对象提供了⾮常多的成员函数,与设备环境的显⽰器、打印机等⼀起⼯作。
例如,如果要在显⽰器等设备上绘制图形,我们可以⽤MFC提供的设备环境类CDC类,因为CDC类中包含了绘图所需要的所有成员函数。
同时。
MFC还提供了以下⼏个CDC的派⽣类:1、CPaintDC类此类⽐较特殊,它的构造函数和析构函数都是针对OnPaint进⾏的。
⽤户⼀旦获得相关的CDC指针,就可以将它当做任何设备环境(包括屏幕、打印机)指针来使⽤,CPaintDC类的构造函数会⾃动调⽤BeginPaint,⽽它的析构函数则会⾃动调⽤EndPaint。
注:本文系转载第3章图形绘制本章要点⏹绘制直线⏹绘制圆和圆弧⏹绘制椭圆和椭圆弧⏹绘制点⏹徒手画线⏹绘制矩形、正多边形⏹绘制多段线⏹迹线、射线、构造线⏹绘制样条曲线⏹绘制云线中望CAD 2010提供了丰富的创建二维图形工具。
本章主要介绍中望CAD 2010中基本的二维绘图命令,常用二维绘图命令有Point、Line、Circle等。
本章目的在于让读者掌握中望CAD每个绘图命令的使用,同时分享一些绘图过程中的经验与技巧。
3.1 绘直线1.命令格式命令行:Line(L)菜单:[绘图]→[直线(L)]工具栏:[绘图]→[直线]直线的绘制方法最简单,也是各种绘图中最常用的二维对象之一。
可绘制任何长度的直线,可输入点的 X、Y、Z 坐标,以指定二维或三维坐标的起点与终点。
2.操作步骤绘制一个凹四边形,按如下步骤操作,如图3-1:图 3-1 凹四边形命令: Line 执行Line命令线的起始点: 100,50 输入绝对直角坐标:[X] ,[Y],确定第1点角度(A)/长度(L)/指定下一点: A 输入A,以角度和长度来确定第2点线的角度:50 输入角度值50线的长度: 15 输入长度值15角度(A)/长度(L)/跟踪(F)/撤消(U)/指定下一点: @1,20输入相对直角坐标:@[X],[Y] 确定第3点角度(A)/长度(L)/跟踪(F)/撤消(U)/指定下一点: @30<-40输入相对极坐标:@[距离]<[角度] 确定第4点角度(A)/长度(L)/跟踪(F)/闭合(C)/撤消(U)/指定下一点:C输入C 闭合二维线段以上通过了解相对坐标和极坐标方式来确定直线的定位点,目的是为练习中望CAD2010的精确绘图。
直线命令的选项介绍如下:角度(A):指的是直线段与当前 UCS的 X 轴之间的角度。
长度(L):指的是两点间直线的距离。
跟踪(F): 跟踪最近画过的线或弧终点的切线方向,以便沿着这个方向继续画线。
第5章绘制液压系统原理图本章导读液压系统是根据液压设备的工作要求,选用适当的基本回路构成的能满足某些具体要求的液压装置。
组成液压系统工作原理图的多个相关液压元件的图形符号,均按国标GB/T786.1—1993《液压及气动图形符号》画出。
本章以组合机床动力滑台液压系统为例说明液压系统原理图的绘制、液压元件明细表的自动生成方法及用Excell文档统计AutoCAD 图块属性数据的方法。
5.1 绘制组合机床动力滑台的液压系统原理图5.1.1 启动【液压气动】工作界面1.选取样板图选择下拉菜单【文件】│【新建】命令,打开【创建新图形】对话框。
单击【从草图开始】选项卡,选取【公制】,单击【确定】按钮。
如图2-1所示。
2.选择【液压气动】工作空间选择下拉菜单【工具】│【工作空间】│【液压气动】命令,选择【液压气动】工作空间。
3.启动【工具选项板】选择下拉菜单【工具】│【选项板】│【工具选项板】命令,启动【工具选项板】。
4. 启动【设计中心】选择下拉菜单【工具】│【选项板】│【设计中心】命令,启动【设计中心】。
5.1.2 绘制液压系统原理图组合机床动力滑台液压系统的组成元件如图5-24所示。
1.绘制变量泵2图形符号利用【工具选项板】插入变量泵图形符号,打开“泵和马达”模块选项卡,选择“单向变量泵”,鼠标在绘图区选择合适的插入点位置,打开【编辑属性】对话框,如图5-1所示,在【style】文本框内输入YB,在【price】文本框内输入500,在【number】文本框内输入2。
图5-1 【编辑属性】对话框2.绘制过滤器1和油箱8图形符号利用【设计中心】插入过滤器、油箱图形符号。
打开“辅助元件”模块文件夹,选中【设计中心】右边内容框的“过滤器”,用鼠标拖动至绘图区,如图5-7所示。
命令行显示如下:命令: _-INSERT 输入块名或[?] <单向变量泵>: "D:\液压气动元件图形符号\辅助元件\过滤器.dwg"单位: 毫米转换: 1.0000指定插入点或[基点(B)/比例(S)/X/Y/Z/旋转(R)]: //在绘图区选择合适的插入点位置输入X 比例因子,指定对角点,或[角点(C)/XYZ(XYZ)] <1>: //回车输入Y 比例因子或<使用X 比例因子>: //回车指定旋转角度<0>: //回车输入属性值style <s>: //回车,不输入型号属性price <p>: 300 //输入300number <n>: 1 //输入序号1命令: _-INSERT 输入块名或[?] <油箱>: "D:\液压气动元件图形符号\辅助元件\油箱.dwg"单位: 毫米转换: 1.0000指定插入点或[基点(B)/比例(S)/X/Y/Z/旋转(R)]:输入X 比例因子,指定对角点,或[角点(C)/XYZ(XYZ)] <1>:输入Y 比例因子或<使用X 比例因子>:指定旋转角度<0>:输入属性值style <s>: //回车price <p>:200 //输入200number <n>: 8 //输入序号8 3.绘制单向阀3图形符号利用【设计中心】插入单向阀图形符号,打开“单向型阀”模块文件夹,选择【设计中心】右边内容框的“单向阀”,用鼠标拖动至绘图区,源图块如图5-2(a)所示,命令行显示如下:命令: _-INSERT 输入块名或[?] <单向阀>: "D:\液压气动元件图形符号\单向型阀\单向阀.dwg"单位: 毫米转换: 1.0000指定插入点或[基点(B)/比例(S)/X/Y/Z/旋转(R)]: r指定旋转角度<0>: 90 //旋转90°后如图5-2(b)所示指定插入点或[基点(B)/比例(S)/X/Y/Z/旋转(R)]:输入X 比例因子,指定对角点,或[角点(C)/XYZ(XYZ)] <1>:输入Y 比例因子或<使用X 比例因子>:输入属性值style <s>: I—25B //输入I—25Bprice <p>: 200 //输入200number <n>: 3 //输入序号3修改序号3水平书写。
第五章轴对称的性质与作图本章进步目标★★★★★☆Level 5通过对本节课的学习,你能够:1.对轴对称的性质与判定达到【高级理解】级别;2.对垂直平分线与角平分线的相关概念达到【初级运用】级别;3.对路径最短问题达到【高级理解】级别。
VISIBLE PROGRESS SYSTEM进步可视化教学体系据说,古希腊有一位聪明过人的学者,名叫海伦。
有一天,一位将军向他请教了一个问题:从A地出发到河边饮马,然后再去B地,走什么样的路线最短?如何确定饮马的地点?提起路线最短的问题,大家知道,连结两点之间的所有线中,最短的是线段。
这个题中马走的是一条折线。
这该怎么办呢?海伦的方法是这样的:取A关于河岸的对称点A',连结A'B,与河岸线相交于C,则C点就是饮马的地方。
将军只要从A出发,沿直线走到C,饮马之后,再由C沿直线走到B,所走的路程就是最短的。
如果将军在河边的另外任一点C'饮马,所走的路程就是AC'+C'B,但是,AC'+C'B=A'C'+C'B>A'B=A'C+CB=AC+CB.可见,在C点外任何一点C'饮马,所走的路程都要远一些.这里有几点需要说明:(1)由作法可知,河流l相当于线段AA'的中垂线,所以AD=A'D。
(2)由上一条可知,将军走的路程就是AC+BC,就等于A'C+BC,而两点确定一线,所以C点为最优。
年轻朋友们喜欢打台球,实际上打台球无时无刻都需要应用海伦的妙法。
下面我们看一个有关打台球的实例。
若在矩形的球台上,有两个球在M和N的位置上。
假如从M打出球,先触及AB边E点,弹出后又触到CB边F点,从CB边再反射出来。
问用怎样的打法,才能使这个球反射后正好撞上在N点放置的球?具体做法是:先作M关于AB的对称点M’,再作N关于BC的对称点N’,那么M’N’和BC的交点为E,F;E、F就是球和各边的撞击点。
第5章图形绘制在Visual C++6.0中,掌握图形程序设计方法是非常重要的。
因为图形在任何一个可视化工程项目中都是不可缺少的。
CDC(设备环境)类封装了图形绘制所需要的各种操作。
本章我们将通过实际例子和较详细的阐述,来了解和掌握如何使用设备环境类(CDC)及图形设备接口(GDI)进行图形绘制。
5.1 设备环境与设备环境类(CDC)5.1.1 设备环境设备环境也称设备上下文(Device Context,简称DC),是计算机物理设备的代表,也是图形设备接口的主要组成部分。
由于Windows是一个与设备无关的操作系统,即Windows不允许直接访问硬件,如果用户想将文本和图形绘制到显示器或其它设备中去,必须通过“设备环境”这个抽象层与硬件进行通信,设备上下文对象的作用就是实现Windows的设备无关性,任何向屏幕上进行输出的功能都要间接地通过它来完成。
设备上下文是Windows的一种数据结构,它包含了有关如显示器或打印机等设备的绘图属性信息。
所有绘画都是通过设备上下文对象来实现的,该对象封装了Windows的画线、图形和文本的API函数。
设备上下文允许在Windows下独立于设备的绘画。
设备上下文不仅能够被用来在屏幕上绘画,它也可以将绘画输出到打印机和图元文件中。
5.1.2 设备环境类设备环境类CDC直接继承于CObject类,该类定义了一类设备对象。
CDC对象提供了非常多的成员函数,与设备环境的显示器、打印机等一起工作。
例如,如果要在显示器等设备上绘制图形,我们可以用MFC提供的设备环境类CDC类,因为CDC类中包含了绘图所需要的所有成员函数。
同时。
MFC还提供了以下几个CDC的派生类:1、CPaintDC类此类比较特殊,它的构造函数和析构函数都是针对OnPaint进行的。
用户一旦获得相关的CDC指针,就可以将它当做任何设备环境(包括屏幕、打印机)指针来使用,CPaintDC类的构造函数会自动调用BeginPaint,而它的析构函数则会自动调用EndPaint。
2、CClientDC和CWindowDC类CClientDC只能在窗口的客户区(不包括边框、工具条、标题栏、滚动条、菜单栏以及状态栏)进行绘图,点(0,0)通常指的是客户区的左上角。
其构造函数调用GetDC,析构函数调用ReleaseDC函数。
CWindowDC允许在窗口的任意位置中进行绘图,点(0,0)指整个窗口的左上角。
其构造函数调用GetWindowDC,析构函数调用ReleaseDC函数。
3、CMetaFileDC类封装了在一个Windows图元文件中绘图的方法。
图元文件是一系列与设备无关的图片的集合,由于它对图像的保存比像素更精确,因而往往在要求较高的场合下使用,例如:AutoCAD 的图像保存等。
目前的Windows已使用增强格式(enhanced-format)的32位图元文件来进行操作。
设备环境类CDC及其派生类如图5.1.1所示。
CClientDC CPaintDC CWindowDC图5.1.1 CDC与其子类继承图5.2 绘图程序5.2.1 CDC基类CDC类是其它DC类的基类,CDC类封装了使用设备环境的各种图形设备接口(GDI)函数,它用于定义一个设备环境对象,并提供了在显示器、打印机和窗口的客户区域上画图的方法。
1、在视图类的OnDraw()函数中绘图在试图类的OnDraw函数中绘图时,直接使用OnDraw()函数中的CDC形参指针pDC,调用它的函数进行绘图:例5.1 绘制矩形与文本(1)创建一个单文档应用程序,名为:显示绘图(2)在视图类的实现文件“显示绘图View.cpp”的OnDraw函数中加如下代码:void CMyView::OnDraw(CDC* pDC){ CMyDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);//选择画刷,浅灰色画刷,见表5.2pDC->SelectStockObject(LTGRAY_BRUSH);CRect rect(10,10,200,70);//定义一个矩形图5.2.1 绘制矩形和文本pDC->Rectangle(rect);//绘制一个矩形pDC->TextOut(20,80,"我们会编制图形程序了!"); //绘制文本pDC->TextOut(20,100,”努力学好Visual C++ !”);}3)编译运行,结果如图5.2.1所示。
说明:SelectStockObject( )函数功能:该函数检索预定义的备用笔、刷子、字体或者调色板的句柄。
参数:BLACK_BRUSH黑色画笔。
LTGRAY_BRUSH:亮灰色画笔;NULL_BRUSH:空画笔(相当于HOLLOW_BRUSH);WHITE_BRUSH:白色画笔;BLACK_PEN:黑色钢笔;......2、在视图类的一般函数中绘图例5.2 在鼠标放下函数WM_LBUTTONDOWN函数中绘图(1)创建一个单文档应用程序,名为:一般函数绘图(2)利用MFC ClassWizard将鼠标放下WM_LBUTTONDOWN消息映射到视图类CMyView 中,并添加代码:void CMyView::OnLButtonDown(UINT nFlags, CPoint point){ //定义一个矩形CRect rect(0,0,100,100);//GetDC检索整个屏幕的设备上下文环境CDC *pDC=GetDC();pDC->Rectangle(rect);//绘制矩形ReleaseDC(pDC);//释放pDC空间CView::OnLButtonDown(nFlags, point);}(3)编译运行,鼠标点击窗口,出现图5.2.2 在OnLButtonDown函数中绘图图5.2.2所示的矩形。
5.2.2 CPaintDC类CPaintDC对象代表了一个窗口的绘图画面,主要用来绘图。
它可以用来处理来自Windows的WM_PAINT消息。
改变窗口大小或移动覆盖在窗上的窗口或对话框时,Windows 会发送WM_PAINT消息以通知客户区的变动,而WM_PAINT消息的处理是在OnPaint()消息处理函数中进行的。
例5.3 在WM_PAINT消息函数中绘图(1)创建一个单文档的应用程序,名为:绘图(2)利用MFC ClassWizard将WM_PAINT消息映射到视图类(View)中,并添加代码:void CMyView::OnPaint(){ //CPaintDC dc(this);//调用MoveTo函数,定点到点(10,10)dc.MoveTo(10,10);//调用LineTo函数,画线到点(100,100)dc.LineTo(100,100); //画线//调用画椭圆函数Ellipse画椭圆dc.Ellipse(120,120,160,160);}(3)编译运行,结果见5.2.3所示画直线图5.2.3 运行结果5.2.3 CClientDC类CClientDC对象用来自动处理对描述窗口的客户程序区域的设备环境进行调用和释放。
在CClientDC对象创建时自动调用GetDC(),在撤销时将自动调用ReleaseDC()。
例5.4 在客户区画一条直线(1)创建一个单文档的应用程序,名为:画直线(2)利用MFC ClassWizard将鼠标放下WM_LBUTTONDOWN消息映射到视图类CMyView 中,并添加代码:void CMyView::OnLButtonDown(UINT nFlags, CPoint point){ CClientDC dc(this);CRect rect; //定义一个矩形。
//取得客户区矩形区域GetClientRect(&rect);//调用MoveTo,定点到客户区的左上角dc.MoveTo(rect.left,rect.top);//调用LineTo函数,画线到客户区的右下角dc.LineTo(rect.right,rect.bottom);}(3)编译运行,鼠标左键放下(点击窗图5.2.4 绘制一条直线口任一点),便在窗口上画一条直线,如图5.2.4所示。
5.3 图形设备接口(GDI)对象GDI(Graphic Device Interface)对象与设备环境对象的关系,类似于笔和纸的关系。
也就是说,GDI提供了用于在DC上画图的绘图工具。
MFC的GDI中包含了各种绘图类并提供各类的绘图函数即定义了若干种对于Windows的绘图工具的对象,该类的继承关系如图5.3.1所示;GDI中包含的各种绘图类有一个共同的抽象基类CGdiObject,具体如表5.1所示:图5.3.1 MFC 的GDI类继承图1、使用GDI对象选择GDI对象进行绘图时,一般要遵循下列步骤:(1)定义一个GDI对象(如CPen、CBrush对象),然后用相应的函数(如CreatePen、CreateSolidBrush)创建此GDI对象。
但要注意;有些GDI派生类的构造函数允许用户提供足够的信息,从而一步即可完成对象的创建任务,这些类有CPen、CBrush。
(2)将构造的GDI对象选入当前设备坏境中,但不要忘记将原来的GDI对象保存起来。
(3)绘图结束后,恢复当前设备环境中原来的GDI对象2、库存的GDI对象除了自定义的GDI对象外,Windows还包含了一些预定义的库存GDI对象。
由于它们是Windows系统的一部分,因此用户用不着删除它们。
CDC的成员函数SelectStockObject可以把一个库存对象选入当前设备环境中,并返回原先被选中的对象指针,同时使原先被选中的对象从设备环境中分离出来。
函数SelectStockObject可选用的库存GDI对象类型可以是表5.2所示值之一。
表5.1 MFC的GDI类类名说明CBitmap “位图”是一种位矩阵,每一个显示像素都对应于其中的一个或多个位,用户可以利用位图来表示图象,也可以利用它来创建画刷CBrush “画刷”定义了一种位图形式的像素,利用它可对区域内部填充颜色或样式CFont “字体”是一种具有某种风格和尺寸的所有字符的完整集合,它常常被当做资源存于磁盘中,其中有一些还依赖于某种设备CPalette “调色板”是一种颜色映射接口,它允许应用程序在不干扰其它应用程序的前提下,充分利用输出设备的颜色描绘能力CPen “画笔”是一种用于画线及绘制有形边框的工具,用户可以指定它的颜色及宽度,并且可以指定它实线、点线或虚线等CRgn “区域”是由多边形、椭圆或二者组合形成的一种范围,可以利用它来进行填充、裁剪以及鼠标点中测试等表5.2 函数SelectStockObject可选用的库存GDI对象类型值类型值含义BLACK_BRUSH 黑色画刷DKGRAY_BRUSH 深灰色画刷GRAY_BRUSH 灰色画刷HOLLOW_BRUSH 中空画刷LTGRAY_BRUSH 浅灰色画刷NULL_BRUSH 空画刷WHITE_BRUSH 白色画刷BLACK_PEN 黑色画笔NULL_PEN 空画笔WHITE_PEN 白色画笔DEVICE_DEFAULT_FONT 设备默认字体SYSTEM_FONT 系统字体5.3.1 画笔CPen类CPen类封装了一个Windows GDI画笔,并且提供了用于操作CPen对象的若干方法。