《Visual C++ 6.0程序设计》课件第8章_第1页
《Visual C++ 6.0程序设计》课件第8章_第2页
《Visual C++ 6.0程序设计》课件第8章_第3页
《Visual C++ 6.0程序设计》课件第8章_第4页
《Visual C++ 6.0程序设计》课件第8章_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章绘图8.1综述8.2绘图实例思考题

8.1综述

在应用程序中,为了使用户界面更加美观、生动或者需要用户手动在客户区生成图像,都要用到绘图。Windows的GDI(设备图形接口)提供了绘图的基本工具,如画点、线、多边形、位图以及文本输出等。MFC的设备环境类CDC封装了全部的绘图函数,使得绘制的图形既可以显示,又可以打印。在MFC中,用视图类Cview成员函数OnDraw()来完成图形与文本的显示,用CWnd类的成员函数OnPaint()重绘窗口。8.1.1设备环境和CDC类

1.设备环境

在Windows显示工作室基于设备环境(DC,DevieceContext),它是一种数据结构。当想要在窗口的工作区中绘制图形,或者将工作区中的数据打印出来时,都必须先获得一个设备环境。设备环境中所谓的“设备”,泛指各种与数据输出有关的设备,如打印机、屏幕等,以及各种特定形式的文件,如BMP文件。而“环境”一词,指将输出到设备的相关数据。当需要将建立的数据输出到设备时,就需要为这个设备准备一个DC,以便存储想要输出的数据,而这些数据就是GDI函数绘图的结果。因此,设备环境(DC)是应用程序与设备驱动程序和输出设备之间的连接桥梁。从Windows程序开始,经过适当的设备驱动程序,最后到达窗口客户区。设备环境还完全定义了设备驱动程序的状态。在应用程序向窗口客户区输出信息之前,必须先获得一个设备描述表。如果没有,则应用程序和窗口间就无法建立联系。

在应用程序中,设备环境的各种特性和方法封装在CDC(设备环境类)中。CDC类是应用程序关于绘图类的基类。MFC库从CDC类派生出几个具体的设备描述表类,它们是CClientDC,CPaintDC,CWindowDC。任何一个具体的绘图操作都要用他们中的一个声明设备对象,才能进行绘图操作。有关设备环境有三个直接相关的类CDC、CPaintDC、CclienDC,类CDC是在MFC中创建设备上下文对象的基类,CDC、CGdiObject类的继承关系如图8-1所示。图8-1CDC、CgdiObject类的继承关系

2.CDC类

1)设备环境CDC类

基于MFC的Windows编程中总是选择一个MFC类对设备环境进行访问。 MFC提供集中不同的设备环境类,CDC是设备环境的基类。基类和派生类只有构造函数和析构函数不同。

(1)CClientDC类:只能在窗口的用户区绘图。用户区指窗口区域中除去边框、标题栏、菜单栏、状态栏等以外的部分。坐标(0,0)通常指用户区的左上角。如果使用CClientDC在视图中绘图,绘图区域不包括文档窗口的边框、标题栏、菜单栏、状态栏;如果在对话窗口中绘图,绘图区域不包括对话框的边框和标题条。在使用CClientDC绘图时,通常先调用窗口的GetClientRect()来获取用户区的大小。

(2)CPaintDC类:往往在OnPaint()函数中使用。OnPaint()函数首先构造一个CpaintDC对象,再调用OnPrepareDC()函数将其准备好,最后以这个准备好的CpaintDC对象指针为参数,来调用OnDraw()函数进行绘图。

2)设备环境类CDC的常用函数介绍

设备环境类CDC的内容十分丰富,涵盖了有关绘图的各个方面。如:绘图状态管理包括背景色、前景色、线宽、线型、填充模式、字体、字号等。MFC中的绘图操作都封装在CDC中,其中有像素操作、填充操作、画线操作、画矩形、画圆形、画椭圆操作、位图操作等,另外还有字符显示、区域的运算及操作等。

常用的CDC函数如表8-1所示。表8-1常用CDC函数8.1.2GDI对象

在Windows应用程序中,绘图工作是由WindowsAPI中的GDI函数来完成的。GDI是GraphicsDeviceInterface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。

在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便地在屏幕、打印机及其他输出设备上输出图形、文本等操作。GDI的出现使程序员无需关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。

MFC提供了5种GDI类,他们分别是CBitmap、CPen、CBrush、CFont、CRgn以及CPalette。他们都派生于CGdiObject类,如图8-2所示。

5种GDI类分别说明如下。

CBitmap:用于建立操作位图的对象;

CPen:用于建立操作画笔的对象;

CBrush:用于建立操作画刷的对象;

CFont:用于建立操作文字的对象;

CRgn:用于建立操作绘制图形的对象;

CPalette:用于建立操作调色盘的对象。图8-2MFC提供的5种GDI类

1.CPen类

在Windows中提供了画笔(pen)和画刷(brush)两种常用的画图笔工具。画图影响画线的方式,包括直线、曲线和封闭曲线(如矩形和椭圆),画笔用于绘制直线和图形的外框,本质上就是画线。与线段有关的参数包含:线段风格、线宽和线色。这些都封装在CPen类中。

1)画笔的创建

创建一个画笔可以用CPen类的CreatePen函数,其原型为:

BOOLCreatePen(intnPenStyle,intnWidth,COLORREFcrColor);

其中:

(1)参数nPenStyle用于指定画笔的风格,其可取值如表8-2所示。表8-2nPenStyle画笔风格

(2)参数nWidth用于指定画笔的宽度。

(3)参数crColr用于指定画笔的颜色。

应该注意的是,颜色参数用RGB宏来定义。RGB宏的定义为:

COLORREFRGB(BYTEbRed,BYTEbGreen,BYTEbBlue)

(1)参数bRed:定义红色强度,其值为0~255。

(2)参数bGreen:定义绿色强度,其值为0~255。

(3)参数bBlue:定义蓝色强度,其值为0~255。

在实际使用中,画笔的创建也可以直接在画笔的构造函数中进行,其原型为:

CPen::CPen(intnPenStyle,intnWidth,COLORREFcrColor)

2)画笔的创建步骤

可以按照下述步骤创建一支新的画笔:

(1)生成画笔的一个实例(从Cpen类派生)Pen。

(2)初始化画笔,使用CreatePen()函数。

(3)装载画笔,使用SelectObject()函数,定义如下:

Cpen*SelectObject(Cpen*pPen);

其中pPen是画笔对象的指针。SelectObject()返回上次所装载的画笔指针,以便使用结束后恢复原来的画笔。

2.Cbrush类

画刷的功能是填充一定的区域。画刷的属性通常包括填充色、填充图案和填充样式。

1)画刷的创建

画刷的建立同样也可以在画刷的构造函数中进行。建立的方法有4种:

CBrush::CBrush()

CBrush::CBrush(COLORREFcrColor)

CBrush::CBrush(intnIndex,COLORREFcrColor)

CBrush::CBrush(CBitmap*pBitmap)

第一种用于建立空白的画刷;第二种建立具有某种指定颜色的画刷;第三种建立一个特殊样式填充的画刷;第四钟建立自定义样式的画刷。

(1)参数crColor指定填充的颜色。

(2)参数nIndex指定特殊样式的画刷,其可选参数如表8-3所示。

(3)参数pBitmap指定填充颜色的位图,其大小为8×8,单位为像素。

2)画刷的创建步骤

(1)使用CBrush类创建一个画刷实例。

(2)生成画刷,调用函数SelectObject(),其格式如下:

Cbrush*SelectObject(Cbrush*pBrush);

其中,pBrush是画刷对象的指针。SelectObject()返回上次所装载画刷的指针,应该保存该指针,以便使用结束后恢复原来的画刷。

3.CFont类

CFont类用来提供各种风格及大小的字体输出,封装了CDC显示字符使用的字库的处理方法。如果要使用CFont对象,首先要构造一个CFont对象,然后使用成员函数CreateFont、CreateFontIndirect、CreatePointFont或CreatePointFontIndirect把该对象与Windows字体相连,这样用户便可以使用该对象的成员函数来操纵字体。

该类只有一个构造函数CFont(),构造完对象后,还不能马上使用,应该调用CreateFont、CreateFontIndirect、CreatePointFont或CreatePointFontIndirect进行初始化,以便确定字体对象的参数。

CFont类封装了一个字体数据结构LOGFONT,yogLOGFONT结构初始化一个CFont对象,LOGFONT的数据结构及i如下:

typedefstructuretagGOGFONT{

LONGlfHeight; //字符的平均逻辑宽度

LONGlfEscapement; //倾角

LONGlfOrientation; //书写方向

LONGlfWeight; //字体的粗细程度

BYTElfItalic; //斜体标志

BYTElfUnderline; //下划线标志

BYTElfStrikeOut; //删除线标志

BYTElfCharSet;

//字符集,汉字必须为GB2312CHARSET

BYTElfOutPrecision; //字符输出精度

BYTElfClipPrecision; //裁剪精度

BYTElfQuality; //逻辑字体与物理字体的相似程度

BYTElfPitchAndFamily;//字符的间隔和字体的相似程度

TCHARlfFaceName[LF_FACESIZE];//字样名称

}LOGFONT;

当产生一个CFont的对象后,必须调用函数CreateFont来选择一种字体。该成员函数的图形声明如下。

BOOLCreateFont(intnHeight,intnWidth,intnEscapement,intnOrientation,intnWeight,BYTEbItalic,BYTEbUnderline,BYTEcStrikeOut,BYTEnCharSet,BYTEnOutPrecision,BYTEnClipPrecision,BYTEnQuality,BYTEnPitchAndFamily,LPCTSTRlpszFaceName);参数说明如下。

(1) nHeigh:单位度量的字体高度。

(2) nEscapement:逻辑单位度量的字体的平均宽度。

(3) nEscapement:字体标注逆时针方向的旋转角度。

(4) nOrientation:角度。

(5) nWeight:字体的粗细程度。

(6) bItalic:字体是否为斜体。

(7) bUnderline:字体是否有下划线。

(8) cStrikeOut:字体是否被穿透。

(9) nCharSet:指出字体的字符集,一共有以下五种字符集。

ANSI_CHARSET

DEFAULT_CHARSET

SYMBOL_CHARSET

SHIFTJIS_CHARSET

OEM_CHARSET

(10) nOutPrecision:指出所要求的裁剪精度,该精度确定了输出与所要求的字体高度、宽度、控制、字符方位及间距的匹配和接近程度,一般取下列值之一。

OUT_CHARACTER_PRECIS

OUT_DEFAULT_PRECIS

OUT_DEVICE_PRECIS

OUT_RASTER_PRECIS

OUT_STRING_PRECIS

OUT_STROKE_PRECIS

OUT_TT_PRECIS

(11) nClipPrecision:指定所要求的裁剪精度。该参数说明怎样裁剪位于裁剪区之外的部分字体。

(12) nPitchAndFamily:字体的间距和所属的族。

(13) lpszFacename:一个指向ASZⅡZ字符串的指针,该字符串确定目标字体的字型名。8.1.3绘图相关函数介绍

1.CPoint类

CPoint类封装了一个点的坐标,它是从POINT结构派生而来的。结构POINT的定义如下:

TypedefstructagPOINT

{

LONGx;

LONGy;

}POINT,*PPOINT;

CPoint类也继承了POINT结构的数据成员x和y。CPoint对象可以用在任何使用POINT结构的场合。其构造函数形式较多,如下:

CPoint();

CPoint(intinitX,intinitY);

CPoint(POINTinitPt);

2.CSize类

如果要表示距离以及相对位置,可以使用CSize对象。MFC类CSize实际是SIZE结构派生而来的,SIZE结构的定义如下:

TypedefstructtagSIZE

{

LONGcx;

LONGcy;

}SIZE,*PSIZE;

CSize也继承了SIZE结构的数据成员

cx和cy,其构造方法与CPoint类似。

3.CRect类

CRect类是绘图时经常遇到的类,它从RECT结构派生,该结构定义如下:

TypedefstructtagRECT

{

LONGleft;

LONGtop;

LONGright;

LONGbottom;

}RECT;

CRect类继承了RECT结构的数据成员left、top、right和bottom。相比于CPoint类和CSize类,CRect的成员函数更多。表8-4给出部分在CRect类中定义的成员函数。

4.设置背景颜色

在默认情况下,绘制图形或显示文本时的背景颜色为白色,但用户可以使用CDC的成员函数SetBkColor()来设置新的背景颜色。其函数原型为:

VirtualCOLORREF

SetBkColor(COLORREFcrColor);

这里,crColor为指定的新的背景色。

5.设置背景模式

使用SetBkColor()函数设置背景颜色之后,只有在使用CDC成员函数SetBkMode()设置背景模式后,设置的背景颜色才会在输出时有效。SetBkColor()函数原型如下:

intSetBkMode(intnBkMode);

nBkMode参数如表8-5所示。

8.2绘图实例

下面通过三个实例来学习如何利用CDC类函数、画笔、画刷以及字体。

8.2.1CDC类函数的应用

【例8-1】

在SDI下,在客户区输出坐标系下的余弦曲线。

在这个例子中,应用CDC提供的绘图函数来绘制一个余弦曲线,操作步骤如下:

(1)在VisualC++6.0操作界面下,选择菜单栏“文件/新建”选项。

(2)在弹出的新建菜单对话框中,选择“工程/”文件夹下

,在静态文本“工程”下的编辑框中输入“chap8_1”。

(3)在“MFCAppWizard–Step1”对话框中,选中“单个文档”单选框,按“完成”按钮结束。

(4)在项目区中,选择,选中并展开,选中并展开文件夹,双击。

(5)在右边工作区中,修改文件起始部分内容:

#include"stdafx.h"

#include"chap8.h"

#include"math.h"

#include"chap8Doc.h"

#include"chap8View.h"

注意,由于在后面的编程中,要使用到sin函数,因此必须添加头文件“math.h”。

(6)回到,在下选中并展开,选中其下双击,在右边工作区中,光标移动到该函数体起始位置。

(7)修改函数体中的内容:

voidCChap8View::OnDraw(CDC*pDC)

{

CChap8Doc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

//TODO:adddrawcodefornativedatahere

pDC->MoveTo(150,350);//画坐标系

pDC->LineTo(550,350); pDC->MoveTo(150,350);

pDC->LineTo(150,50);

pDC->TextOut(150,10,"cos");

pDC->TextOut(550,350,"x");

doubley,y1;

POINTp;

for(inti=0;i<400;i++)//求余弦值并画点

{

y1=double(i)/400*2*3.1415;

y=150*cos(y1);//求余弦值

p.x=i+150;

p.y=int(200-y);

pDC->SetPixel(p,RGB(0,0,0,));

}

}

(8)按下“Ctrl+F5”键,运行程序,结果如图8-3所示。图8-3例8-1输出8.2.2画笔、画刷应用实例

【例8-2】

建立一个应用程序,输出一个矩形,通过工具栏可以修改矩形的颜色、外框线型宽度和内部填充色。

在这个例子中,将应用画笔和画刷练习如何更改图形的颜色,内部填充等操作功能,操作步骤如下:

(1)在VisualC++6.0操作界面下,选择菜单栏“文件”选项,在下拉菜单中,选中“新建”选项。

(2)在弹出的新建菜单对话框中,选择“工程”文件夹下

,在静态文本“工程”下的编辑框中输入“chap8_2”。

(3)在“MFCAppWizard–Step1”对话框中,选中“单个文档”单选框,按“完成”按钮结束。

(4)在项目区中,选择,将文件夹展开,选中,将其展开,用鼠标双击。

(5)在右边的工作区中的工具栏编辑区中,利用提供的调色板和绘图工具栏,手动添加几个工具栏按钮。

(红色):为画笔或画刷提供关于颜色的信息,按下该按钮,颜色设置为红色,其ID值为ID_RED。

(蓝色):为画笔或画刷提供关于颜色的信息,按下该按钮,颜色设置为蓝色,其ID值为ID_BLUE。

(绿色):为画笔或画刷提供关于颜色的信息,按下该按钮,颜色设置为绿色,其ID值为ID_GREEN。

(黑色):为画笔或画刷提供关于颜色的信息,按下该按钮,颜色设置为黑色,其ID值为ID_BLACK。

(灰色):为画笔或画刷提供关于颜色的信息,按下该按钮,颜色设置为灰色,其ID值为ID_GRAY。

(线宽增加):提供画笔的宽度信息,按下该按钮,线宽增加1,其ID值为ID_ADD。

(线宽减少):提供画笔的宽度信息,按下该按钮,线宽减少1,其ID值为ID_DEC。

(画刷):提供画刷信息,按下该按钮,表示进行画刷的选择,对图形内部进行颜色填充,其ID值为ID_BRUSH。

(6)按下“Ctrl+W”键,弹出“MFCClassWizard”对话框,如图8-4所示。在“Classname”中,选择“CChap8_2Doc”。在“ObjectIDs”中找到“ID_RED”双击,在“Messages”中选中“COMMAND”并双击,在“Memberfunctions”中出现

成员函数。图8-4“MFCClassWizard”对话框

(7)同样的方法,为ID_BLUE、ID_GREEN、ID_BLACK、ID_GRAY、ID_ADD、ID_DEC、ID_BRUSH进行相同的操作,增加“COMMAND”消息处理函数,选择“确定”按钮。

(8)回到项目区中,选择“ClassView”,选中“CChap8_2Doc”,鼠标右键单击,在弹出菜单中选择“AddMemberVariable”对话框,如图8-5所增。在弹出对话框中,“VariableTyep”下编辑框中输入“int”,“VariableName”下编辑框中输入“yanse”,“Access”设为默认值“Protected”类型。图8-5添加成员变量对话框这样就在“CChap8_2Doc”类中增加了一个名为“yanse”的整型公有型变量。

(9)使用同样的方法,在“CChap8_2Doc”类中分别增加名为“line”和“brush”的整型共有型变量。

这里,“yanse”用来作为颜色选择的标识,1为红色,2为蓝色,3为绿色,4为黑色,5为灰色;“line”用来作为线宽选择的标识,1为线宽增加1,2为线宽减小1;“brush”用来作为画刷选择的标识,1为选中画刷,对矩形内部进行填充。

(10)展开图标,在其构造函数中

,修改其中内容,为变量赋初值:

CChap8_2Doc::CChap8_2Doc()

{

//TODO:addone-timeconstructioncodehere

brush=0;

line=0;

yanse=0;

}(11)选中双击,在右边的工作区中修改其内容:

voidCChap8_2Doc::OnAdd()

{

//TODO:Addyourcommandhandlercodehere

line=1;

UpdateAllViews(NULL);

}

(12)选中双击,在右边的工作区中修改其内容:

voidCChap8_2Doc::OnBlack()

{

//TODO:Addyourcommandhandlercodehere

yanse=4;

UpdateAllViews(NULL);

}(13)选中双击,在右边的工作区中修改其内容:

voidCChap8_2Doc::OnBlue()

{

//TODO:Addyourcommandhandlercodehere

yanse=2;

UpdateAllViews(NULL);

}

(14)选中双击,在右边的工作区中修改其内容:

voidCChap8_2Doc::OnBrush()

{

//TODO:Addyourcommandhandlercodehere

brush=1;

UpdateAllViews(NULL);

}(15)选中双击,在右边的工作区中修改其内容:

voidCChap8_2Doc::OnDec()

{

//TODO:Addyourcommandhandlercodehere

line=2;

UpdateAllViews(NULL);

}

(16)选中双击,在右边的工作区中修改其内容:

voidCChap8_2Doc::OnGray()

{

//TODO:Addyourcommandhandlercodehere

yanse=5;

UpdateAllViews(NULL);

}(17)选中双击,在右边的工作区中修改其内容:

voidCChap8_2Doc::OnGreen()

{

//TODO:Addyourcommandhandlercodehere

yanse=3;

UpdateAllViews(NULL);

}

(18)选中双击,在右边的工作区中修改其内容:

voidCChap8_2Doc::OnRed()

{

//TODO:Addyourcommandhandlercodehere

yanse=1;

UpdateAllViews(NULL);

}

(19)回到中,选中,用鼠标右键单击,在弹出菜单中,选择“AddMemberVariable”,在弹出对话框中添加如表8-6所示的成员变量。

(20)回到,选中函数双击,在右边工作区中,光标移动到该函数体起始位置。修改函数体中的内容:

voidCChap8_2View::OnDraw(CDC*pDC)

{

CChap8_2Doc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

//TODO:adddrawcodefornativedatahere

CPennewpen;//新画笔

CBrushnewbrush;//新画刷

switch(pDoc->yanse)//根据“yanse”参数确定当前颜色

{case1://红色

color=RGB(255,0,0);

break;

case2://蓝色

color=RGB(0,0,255);

break;

case3://绿色

color=RGB(0,255,0);

break;

case4://黑色

color=RGB(0,0,0);

break;

case5://灰色

color=RGB(127,127,127);

break;

}switch(pDoc->line)

//根据“line”信息,选择画笔线宽操作

{

case1://增加画笔线宽

{

width++;

break;

}

case2://减少画笔线宽

{

width--;

break;

}

}

newpen.CreatePen(0,width,color);//以选择后的线宽和颜色创建新画笔

newbrush.CreateSolidBrush(color);//以选择后的颜色创建新画刷

if(pDoc->brush==1)//如果选择了画刷按钮

pDC->SelectObject(&newbrush); //使用画刷进行填充

else

pDC->SelectObject(&newpen);

//使用画笔画线

pDC->Rectangle(100,100,200,200);

//画矩形

}

(21)按下“Ctrl+F5”键,运行程序。初始画面选择图形输出结果如图8-6所示。图8-6选择图形输出结果

(22)选择,连续按下,则输出如图8-7所示。

(23)选择,再按下,输出如图8-8所示。图8-7选择线宽输出结果图8-8选择画刷输出结果8.2.3文本输出应用实例

【例8-3】

在SDI下输出用户指定大小的文字,使其具有霓虹灯效果,每隔1秒变换一种颜色。

SetTimer()函数介绍:

本例中要求输出文本有霓虹灯效果,每隔一定时间颜色改变,这就要使用SetTimer函数。当需要每隔一段时间执行一件事的时候就需要使用SetTimer函数。使用定时器的方法比较简单,通常告诉Windows一个时间间隔,然后Windows以此时间间隔周期性触发程序。通常用两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数。

WM_TIMER消息需要有个触发事件,其触发函数为SetTimer,原型为:

UINTSetTimer(UINTnIDEvent,UINTnElapse,void(CALLBACKEXPORT*lpfnTimer)(HWND,UINT,YINT,DWORD))

当使用SetTimer函数的时候,就会生成一个计时器。参数nIDEvent指的是计时器的标识,也就是名字;参数nElapse指的是时间间隔,也就是每隔多长时间触发一次事件,单位为毫秒;第三个参数是一个回调函数,在这个函数里,放入想要做的事情的代码,也可以将它设定为NULL,也就是使用系统默认的回调函数,系统默认的是onTime函数。在本例中,练习使用字体类对文本的颜色进行修改,操作步骤如下:

(1)在VisualC++6.0操作界面下,选择菜单栏“文件”选项,在下拉菜单中,选中“新建”选项。

(2)在弹出的新建菜单对话框中,选择“工程”文件夹下

,在静态文本“工程”下的编辑框中输入“chap8_3”。

(3)在“MFCAppWizard–Step1”对话框中,选中“单个文档”单选框,按“完成”按钮结束。

(4)选中,用鼠标右键单击,在弹出菜单中选择“AddMemberVariable”,按照表8-7所示添加成员变量。

(5)选中并双击,光标移动到函数体起始位置。该函数为“CChap8_3View”的构造函数,在里面可以进行变量的初始化,用户对函数进行修改:

CChap8_3View::CChap8_3View()

{

//

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论