visualc面向对象编程教程_08图形设备接口

上传人:xx****x 文档编号:243095872 上传时间:2024-09-15 格式:PPT 页数:46 大小:630KB
返回 下载 相关 举报
visualc面向对象编程教程_08图形设备接口_第1页
第1页 / 共46页
visualc面向对象编程教程_08图形设备接口_第2页
第2页 / 共46页
visualc面向对象编程教程_08图形设备接口_第3页
第3页 / 共46页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第 8 章,图形设备接口,1,第15讲,课 题: 图形处理(1),目的要求: 让学生了解图形设备接口、画笔和画刷,掌握基本几何图形的绘制。,教学重点: 设备环境、颜色的设置及GDI对象的使用。,教学难点: 画笔及画刷的使用,教学课时: 2课时,教学方法: 授课为主、鼓励课堂交流,本次课涉及的学术前沿:,2,Windows是一个图形操作系统,其所有的图形可视效果都是通过绘制操作而完成的。图形显示的实质就是利用Windows提供的图形设备接口将图形绘制在显示器上。大多数应用程序都需要在客户区绘制一些图形,如绘制文本、几何图形、位图和光标等。,前面几章已经涉及到有关图形处理的内容,只是使用了Windows系统默认的图形设备接口和设备环境,绘制的图形没有颜色、线型和字体的变化。,3,本章主要学习内容:,图形处理的基本原理:,图形设备接口,设备环境,GDI坐标系,映射模式,使用画笔和画刷绘制图形,文本与字体,位图、图标和光标,4,8.1 图形设备接口,Windows提供了一个称为图形设备接口,GDI,(Graphics Device Interface)的抽象接口。GDI作为Windows的重要组成部分,它负责管理用户绘图操作时功能的转换。用户通过调用GDI函数与设备打交道,GDI通过不同设备提供的驱动程序将绘图语句转换为对应的绘图指令,避免了直接对硬件进行操作,从而实现所谓的,设备无关性,。,编程时采用MFC方法绘制图形也很方便,MFC对GDI函数和绘图对象进行了封装。,5,图形设备接口,GDI,管理Windows应用程序图形的绘制,,在应用程序中,通过调用,GDI,函数绘制不同尺寸、颜色、风格的几何图形、文本和位图。这些图形处理函数组成了图形设备接口,GDI,。,GDI,是形成,Windows,核心的三种动态链接库之一,,MFC,将,GDI,函数封装在一个名为,CDC,的设备环境类中,因此我们可以通过调用,CDC,类的成员函数来完成绘图操作。,所谓,设备无关性,,是指操作系统屏蔽了硬件设备的差异,使用户编程时一般无需考虑设备的类型,如不同种类的显示器或打印机。,8.1.1 概述,6,Windows绘图过程和设备无关性的实现:,GDI,处于设备驱动程序的上一层,当程序调用绘图函数时,,GDI,将绘图命令传送给当前设备的驱动程序,以调用驱动程序提供的接口函数。驱动程序的接口函数将,Windows,绘图命令转化为设备能够执行的输出命令,实现图形的绘制。不同设备具有不同的驱动程序,设备驱动程序是设备相关的。,7,8.1.2,设备环境,为了实现设备无关性,应用程序的输出不直接面向显示器等物理设备,而是面向一个称之为,设备环境DC,(Device Context)的虚拟逻辑设备。,设备环境也称,设备描述表,或,设备上下文,,它是由Windows管理的一个数据结构,它保存了绘图操作中一些共同需要设置的信息,如当前的画笔、画刷、字体和位图等图形对象及其属性,以及颜色和背景等影响图形输出的绘图模式。,形象地说,一个设备环境提供了一张,画布,和一些绘画的,工具,,我们可以使用不同颜色的工具在上面绘制点、线、圆和文本。,8,设备环境中的“,设备”,是指任何类型的显示器或打印机等输出设备,绘图时用户不用关心所使用设备的编程原理和方法。所有的绘制操作必须通过设备环境进行间接的处理,Windows自动将设备环境所描述的结构映射到相应的物理设备上。,从根本上来说,,设备环境DC,是一个Windows数据结构,该结构存储着程序向设备输出时所需要的信息,应用程序利用它定义图形对象及其属性,并实现应用程序、设备驱动程序和输出设备之间绘图命令的转换。,在Windows中不使用DC无法进行输出,在使用任何GDI绘图函数之前,必须建立一个设备环境。,9,获取,设备环境DC,的方法:,在程序中不能直接存取,DC,数据结构,只能通过系统提供的一系列函数或使用设备环境的句柄HDC来间接地获取或设置设备环境结构中的各项属性,如显示器高度和宽度、支持的颜色数及分辨率等。,如果采用,SDK,方法编程,获取DC的方法有两种:在,WM_PAINT,消息处理函数中通过调用API函数,BeginPaint(),获取设备环境,在消息处理函数返回前调用API函数,EndPaint(),释放设备环境。在其他函数中通过调用API函数,GetDC(),获取设备环境,调用API函数ReleaseDC()释放设备环境。,10,如果采用,MFC,方法编程,MFC提供了不同类型的DC类,每一个类都封装了,DC,句柄,并且它们的构造函数自动调用获取DC的API函数,析构函数自动调用释放DC的API函数。因此,在程序中通过声明一个MFC设备环境类的对象就自动获取了一个DC,而当该对象被销毁时就自动释放了获取的,DC。MFC AppWizard,应用程序向导创建的OnDraw()函数自动支持所获取的DC。,MFC的DC类包括,CDC、CPaintDC、CClientDC、CWindowDC,和CMetaFileDC等,其中CDC类是MFC设备环境类的基类,其它的MFC设备环境类都是CDC的派生类。,11,CDC,类既作为其它MFC设备环境类的基类,又可以作为一个一般的设备环境类使用。利用它可以访问设备属性和设置绘图属性。CDC类对GDI的所有绘图函数进行了封装。,CPaintDC,类是OnPaint()函数使用的设备环境类,它代表一个窗口的绘图画面。如果添加WM_PAINT消息处理函数OnPaint(),就需要使用CPaintDC类来定义一个设备环境对象。,CClientDC,类代表了客户区设备环境。当在客户区实时绘图时,需要利用CClientDC类定义一个客户区设备环境。,CWindowDC,类代表了整个程序窗口设备环境,,可以在整个窗口区域绘图。,MFC设备环境类:,12,8.1.3 GDI坐标系和映射模式,Windows坐标系分为,逻辑坐标系,和,设备坐标系,两种,,GDI,支持这两种坐标系。一般而言,GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠标的鼠标位置是采用设备坐标。,逻辑坐标系,是面向DC的坐标系,这种坐标不考虑具体的设备类型,在绘图时,Windows会根据当前设置的,映射模式,将逻辑坐标转换为设备坐标。,设备坐标系,是面向物理设备的坐标系,这种坐标以像素或设备所能表示的最小长度单位为单位,X轴方向向右,Y轴方向向下。设备坐标系的原点位置(0, 0)不限定在设备显示区域的左上角。,13,设备坐标系,分为,屏幕坐标系、窗口坐标系,和,客户区坐标系,三种相互独立的坐标系。,屏幕坐标系,以屏幕左上角为原点,一些与整个屏幕有关的函数均采用屏幕坐标,如GetCursorPos()、SetCursorPos()、CreateWindow()、MoveWindow()。弹出式菜单使用的也是屏幕坐标。,窗口坐标系,以窗口左上角为坐标原点,它包括窗口标题栏、菜单栏和工具栏等范围。,客户区坐标系,以窗口客户区左上角为原点,主要用于客户区的绘图输出和窗口消息的处理。鼠标消息的坐标参数使用客户区坐标,CDC类绘图成员函数使用与客户区坐标对应的逻辑坐标。,屏幕坐标系、窗口坐标系和客户区坐标系,14,坐标之间的相互转换,编程时,有时需要根据当前的具体情况进行三种设备坐标之间或与逻辑坐标的相互转换。,MFC提供了两个函数,CWnd:ScreenToClient(),和,CWnd:ClientToScreen(),用于屏幕坐标与客户区坐标的相互转换。,MFC提供了两个函数,CDC:DPtoLP(),和,CDC: LPtoDP(),用于设备坐标与逻辑坐标之间的相互转换。,15,例,修改例,5-13,中的程序,MyDraw,,采用将设备坐标转换为逻辑坐标的方法实现滚动视图的功能。,Windows鼠标位置使用设备坐标系,以客户区窗口原点作为基准,而在OnDraw()函数中使用逻辑坐标。因此,为了在滚动视图中重绘图形,必须在存储线段起点和终点之前将其坐标转换为逻辑坐标。实质上,OnDraw()函数由OnPaint()函数调用,在调用OnDraw()函数前,OnPaint()函数已经调用了函数OnPrepareDC()对设备环境进行了调整。,打开应用程序项目MyDraw,修改单击鼠标和鼠标移动的消息处理函数。,16,void CMyDrawView:OnLButtonDown(,UINT nFlags, CPoint point),/ TODO: Add your message handler code here . . .,CClientDC dc(this);,OnPrepareDC( / 调整设备环境的属性,dc.DPtoLP( / 将设备坐标转换为逻辑坐标,SetCapture(); / 捕捉鼠标,:SetCursor(m_hCross); / 设置十字光标,m_ptOrigin=point;,m_bDragging=TRUE; / 设置拖拽标记,/CScrollView:OnLButtonDown(nFlags, point);,17,void CMyDrawView:OnMouseMove(UINT nFlags, CPoint point),if(m_bDragging),CMyDrawDoc *pDoc=GetDocument();,ASSERT_VALID(pDoc);,CClientDC dc(this);,OnPrepareDC(,dc.DPtoLP(,pDoc-AddLine(m_ptOrigin, point);,dc.MoveTo(m_ptOrigin);,dc.LineTo(point);,m_ptOrigin=point;,/CScrollView:OnMouseMove(nFlags, point);,18,映射模式,映射模式确定了在绘制图形时所依据的坐标系,它定义了逻辑单位的实际大小、坐标增长方向,所有映射模式的坐标原点均在设备输出区域(如客户区或打印区)的左上角。此外,对于某些映射模式,用户还可以自定义窗口的长度和宽度,设置视图区的物理范围。,Windows定义了8种映射模式:MM_TEXT、MM_LOMETRIC、MM_HIMETRIC、MM_LOE- NGLISH、MM_HIENGLISH、MM_TWIPS、MM _ISOTROPIC、MM_ANISOTROPIC,映射模式使得程序员可不必考虑输出设备的具体设备坐标系,而在一个统一的逻辑坐标系中进行图形的绘制。,19,映射模式,逻辑单位,坐标系设定,MM_TEXT,一个像素,X,轴正方向朝右,,Y,轴正方向朝下,MM_LOMETRIC,0.1,毫米,X,轴正方向朝右,,Y,轴正方向朝上,MM_HIMETRIC,0.01,毫米,X,轴正方向朝右,,Y,轴正方向朝上,MM_LOENGLISH,0.01,英寸,X,轴正方向朝右,,Y,轴正方向朝上,MM_HIENGLISH,0.001,英寸,X,轴正方向朝右,,Y,轴正方向朝上,MM_TWIPS,1/1440,英寸,X,轴正方向朝右,,Y,轴正方向朝上,MM_ISOTROPIC,系统确定,X,、,Y,轴可任意调节,,X,、,Y,轴比例为,1:1,MM_ANISOTROPIC,系统确定,X,、,Y,轴可任意调节,,X,、,Y,轴比例任意,Windows映射模式,20,设置原点的坐标:,通过调用函数,CDC:SetWindowOrg(),设置设备环境的,窗口原点,的坐标,调用,CDC:SetViewportOrg(),重新设置设备的,视口原点,的坐标。这里,窗口是对应于逻辑坐标系(设备环境)由用户设定的一个区域,而视口是对应于实际输出设备由用户设定的一个区域。,窗口原点,是指逻辑窗口坐标系的原点在视口(设备)坐标系中的位置,,视口原点,是指设备实际输出区域的原点。,除了映射模式,窗口和视口也是决定一个点的逻辑坐标如何转换为设备坐标的一个因素。一个点的逻辑坐标按照如下式子转换为设备坐标:,设备(视口)坐标 = 逻辑坐标 窗口原点坐标 + 视口原点坐标,21,例,分别在OnDraw()函数中添加如下代码,设置不同的窗口原点和视口原点,结果有什么不同。,(1)pDC-SetMapMode(MM_TEXT);,pDC-Rectangle(CRect(50, 50, 100, 100);,(2)pDC-SetMapMode(MM_TEXT);,pDC-,SetWindowOrg(50, 50);,pDC-Rectangle(CRect(50, 50, 100, 100);,(3)pDC-SetMapMode(MM_TEXT);,pDC-,SetViewportOrg(50,50);,pDC-Rectangle(CRect(50, 50, 100, 100);,(4)pDC-SetMapMode(MM_TEXT);,pDC-,SetViewportOrg(50,50);,pDC-,SetWindowOrg(50, 50);,pDC-Rectangle(CRect(50, 50, 100, 100);,22,23,8.1.4,颜色的设置,Windows,用,COLORREF,类型的数据存放颜色,它是一个,32,位整数。任何一种颜色都是由红、绿、蓝三种基本颜色组成,,COLORREF,类型数据的低位字节存放红色强度值,第,2,个字节存放绿色强度值,第,3,个字节存放蓝色强度值,高位字节为,0,,每一种颜色分量的取值范围为,0,到,255,。,直接设置,COLORREF,数据不太方便,Windows提供了,RGB,宏用于设置颜色,将其中的红、绿、蓝分量值转换为COLORREF类型的颜色数据:,RGB(byRed, byGreen, byBlue),其中参数byRed、byGreen和byBlue分别表示红、绿、蓝分量值(范围0到255)。,24,RGB宏的使用:,很多涉及到颜色的GDI函数都需要使用,COLORREF,类型的参数,如设置背景色的成员函数,CDC:SetBkColor()、,设置文本颜色的成员函数,CDC:SetTextColor()。,例如:,COLORREF rgbBkClr=RGB(192,192,192);/ 定义灰色,pDC-SetBkCorlor(rgbBkClr);/ 背景色为灰色,pDC-SetTextColor(RGB(0,0,255);/ 文本颜色为兰色,25,标准彩色的,RGB,值,颜色,RGB,分量值,颜色,RGB,分量值,浅红,255,,,0,,,0,深红,128,,,0,,,0,浅绿,0,,,255,,,0,深绿,0,,,128,,,0,浅蓝,0,,,0,,,255,深蓝,0,,,0,,,128,浅黄,255,,,255,,,0,深黄,128,,,128,,,0,浅青,0,,,255,,,255,深青,0,,,128,,,128,紫色,255,,,0,,,255,灰色,192,,,192,,,192,白色,255,,,255,,,255,黑色,0,,,0,,,0,26,在默认状态下,当用户创建一个设备环境并在其中绘图时,系统使用设备环境缺省的绘图工具及其属性。如果要使用不同风格和颜色的绘图工具进行绘图,用户必须重新为设备环境设置自定义的,画笔,和,画刷,等绘图工具。,画笔,和,画刷,是Windows中两种最重要的绘图工具,,画笔,用于绘制点、线、矩形和椭圆等几何图形,,画刷,用指定的颜色和图案来填充绘图区域,这些绘图工具又统称为GDI对象。,8.2,画笔和画刷,27,8.2.1 GDI,对象,Windows GDI,提供了一些绘图对象,程序通过这些,GDI,对象,设置绘图的工具和风格,这里的,对象,是指,Windows,数据结构,而不是,C+,类的对象。,GDI,对象,是,Windows,图形设备接口的抽象绘图工具。除了,画笔,和,画刷,,其它,GDI,对象还包括,字体、位图,和,调色板,。,MFC,对,GDI,对象进行了很好的封装,提供了封装,GDI,对象的类,如,CPen,、,CBrush,、,CFont,、,CBitmap,和,CPalette,等,这些类都是,GDI,对象类,CGdiObject,的派生类。,28,CDC类提供了成员函数,SelectObject(),选择用户自己创建的GDI对象,该函数有多种重载形式,可以选择用户已定制好的画笔、画刷、字体和位图等不同类型的GDI对象。,CPen* SelectObject(CPen* pPen);,CBrush* SelectObject(CBrush* pBrush);,virtual CFont* SelectObject(CFont* pFont);,CBitmap* SelectObject(CBitmap* pBitmap);,函数参数是一个指向用户已定制好的GDI对象的指针,选择操作成功函数将返回以前GDI对象的指针,否则返回NULL。,选择一个,GDI,对象,:,29,8.2.2,使用画笔,当用户创建一个用于绘图的设备环境时,该设备环境自动提供了一个宽度为一个像素单位、风格为实黑线(,BLACK_PEN,)的缺省画笔。如果要在设备环境使用自己的画笔绘图,首先需要创建一个指定风格的画笔,然后将创建的画笔选入设备环境,最后,在使用该画笔绘图结束后需要释放该画笔。,1. 创建画笔,创建画笔最简单的方法是调用,CPen,类的一个带参数的构造函数来构造一个CPen类画笔对象,以下代码创建了一个红色虚线画笔:,CPen PenNew (PS_DASH, 1, RGB(255, 0, 0);,30,创建画笔的第二种方法是首先构造一个没有初始化的CPen类画笔对象,然后调用成员函数,CPen:CreatePen(),创建定制的画笔工具:,CPen PenNew;,PenNew,.,CreatePen(PS_DASH, 1, RGB(255,0,0);,函数,CreatePen(),的参数类型与带参数的CPen类构造函数完全一样。当画笔对象的声明与创建不在同一个地方时(如需要多次改变画笔)只有采用这种方法。,样 式,说 明,样 式,说 明,PS_SOLID,实线,PS_DASHDOTDOT,双点划线,PS_DOT,点线,PS_NULL,空的边框,PS_DASH,虚线,PS_INSIDEFRAME,边框实线,PS_DASHDOT,点划线,31,创建画笔后必须调用成员函数,CDC: SelectObject(),将创建的画笔选入当前设备环境。如果选择成功,函数,SelectObject(),将返回以前画笔对象的指针。选择新的画笔时应该保存以前的画笔对象,如下代码所示:,CPen* pPenOld,pPenOld =pDC-SelectObject(,2.,选择创建的画笔,32,创建和选择画笔工具后,应用程序就可以使用该画笔绘图。当绘图完成后,应该通过调用成员函数,CDC:SelectObject(),恢复设备环境以前的画笔工具,并通过调用成员函数,CGdiObject:DeleteObject(),释放GDI对象所占的内存资源,如下代码所示:,pDC-SelectObject(pPenOld);/ 恢复设备环境DC中原来的画笔,PenNew.DeleteObject();/ 删除底层的GDI对象,3.,还原画笔,33,在,OnDraw(),函数中添加如下所示的代码:,CPen,*,pPenOld, PenNew;,int nPenStyle= PS_SOLID, / 实线,PS_DOT, / 点线,PS_DASH, / 虚线,PS_DASHDOT, / 点划线,PS_DASHDOTDOT, / 双点划线,PS_NULL, / 空的边框,PS_INSIDEFRAME, / 边框实线,;,char,*,strStyle=Solid,Dot,Dash,DashDot,DashDotDot,Null,InsideFrame;,pDC-TextOut(60,10,用不同样式的画笔绘图);,例,编写一个,SDI,应用程序,绘制不同风格、宽度和颜色的直线。,34,for(int i=0; iSelectObject(,/,选择画笔,pDC-TextOut(10,30+20*i,strStylei);,pDC-MoveTo(100,40+20*i);,pDC-LineTo(200,40+20*i);,pDC-SelectObject(pPenOld); / 恢复原来的画笔,PenNew.DeleteObject(); / 删除底层的GDI对象,else,MessageBox(不能创建画笔!);,35,char *strWidth=1,2,3,4,5,6,7;,pDC-TextOut(260,10,用不同宽度的画笔绘图);,for(i=0; iSelectObject( / 选择画笔,pDC-TextOut(260,30+20*i,strWidthi);,pDC-MoveTo(300,40+20*i);,pDC-LineTo(400,40+20*i);,pDC-SelectObject(pPenOld); / 恢复原来的画笔,PenNew.DeleteObject(); / 删除底层的GDI对象,else,MessageBox(不能创建画笔!);,36,char *strColor=红,绿,蓝,黄,紫,青,灰;,COLORREF rgbPenClr=RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),RGB(255,255,0),RGB(255,0,255),RGB(0,255,255),RGB(192,192,192);,pDC-TextOut(460,10,用不同颜色的画笔绘图);,for(i=0; iSelectObject(pPenNew); /选择创建的画笔,pDC-TextOut(460,30+20*i, strColori);,pDC-MoveTo(500,40+20*i);,pDC-LineTo(600,40+20*i);,pDC-SelectObject(pPenOld); / 恢复原来的画笔,delete pPenNew; / 自动删除底层的GDI对象,37,38,当创建一个设备环境时,该设备环境自动提供了一个填充色为白色(,WHITE_BRUSH,)的缺省画刷。与画笔一样,也可以利用MFC画刷类,CBrush,创建自己的画刷,用于填充图形的绘制。,画刷有三种基本类型:,纯色画刷、阴影画刷,和,图案画刷,,CBrush类提供了多个不同重载形式的构造函数。以下创建三种不同类型的画刷:,CBrush brush1(RGB(255,0,0);/ 创建纯色画刷,CBrush brush2(HS_DIAGCROSS, RGB(0,255,0); / 创建阴影画刷,CBrush brush3(/ 创建图案画刷,8.2.3 使用画刷,39,创建画刷也可先构造一个没有初始化的CBrush类画刷对象,然后调用CBrush类的初始化成员函数创建定制的画刷工具。CBrush类提供的常用创建函数有:,CreateSolidBrush(),用指定的颜色创建一个纯色画刷;,CreateHatchBrush(),用指定的阴影样式和颜色创建一个阴影画刷;,CreatePatternBrush(),用位图创建一个图案画刷;,CreateSysColorBrush(),用系统默认颜色创建一个指定阴影样式的画刷。,如下代码创建了一个填充色为红色、图案为垂直相交阴影线的画刷:,CBrush BrushNew;,BrushNew.CreateHatchBrush(HS_CROSS, RGB(255, 0, 0);,40,1建立一个基于对话框的应用程序UseBrush,为对话框类CUseBrushDlg添加一个CBrush类型的成员变量,m_BrushBkClr,。在对话框初始化成员函数OnInitDialog()中创建一个自定义颜色的画刷。,BOOL CUseBrushDlg:OnInitDialog(),. . . . . .,/ TODO: Add extra initialization here,m_BrushBkClr.CreateSolidBrush(RGB(0,0,255);,/ 创建一个蓝色画刷,return TRUE; / return TRUE unless you set the focus . . .,例,编写一个对话框应用程序,并重新设置对话框的背景色。,41,2利用ClassWzard为对话框类CUseBrushDlg添加,WM_CTLCOLOR,的消息处理函数,返回用户自己创建的画刷,m_BrushBkClr,。,HBRUSH CUseBrushDlg:OnCtlColor(CDC* pDC,CWnd* pWnd, UINT nCtlColor),/HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd,nCtlColor); / 不使用缺省的画刷,/ TODO: Return a different brush if the default . . .,return m_BrushBkClr;,42,43,Windows预定义了一些简单风格的GDI对象,用户使用这些GDI对象时,无需自己创建它们,可以直接将它们选入当前的设备环境,这些GDI对象称作为,堆(Stock)对象,。堆对象包括,堆画笔、堆画刷,和,堆字体,等。,通过调用成员函数CDC:SelectStockObject()可以选择一个堆对象绘图工具,以下代码将堆画笔和堆画刷作为当前的绘图工具:,pPenOld=(CPen*) pDC-SelectStockObject(NULL_PEN); / 使用堆画笔对象,pBrhOld=(CBrush*) pDC-SelectStockObject(LTGRAY _BRUSH);/ 使用堆画刷对象,8.2.4,使用,GDI,堆对象,44,堆画笔、画刷的样式及说明,样 式,说 明,样 式,说 明,BLACK_PEN,黑色画笔,WHITE_PEN,白色画笔,NULL_PEN,空画笔,BLACK_BRUSH,黑色画刷,WHITE_BRUSH,白色画刷,NULL_BRUSH,空画刷,GRAY_BRUSH,灰色画刷,DKGRAY_BRUSH,深灰色画刷,LTGRAY_BRUSH,浅灰色画刷,HOLLOW_BRUSH,虚画刷,45,作业:,1、如何使用画笔和画刷?,2、上机实现本章教材上的例题,46,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!