求一用C语言画直线的程序

Python049

求一用C语言画直线的程序,第1张

C语言的话画直线用MoveTo()和LineTo()很简单啊。

帮你复制一份我学习时老师给的画线两例:

#include<graphics.h>

#include<math.h>

/*

###############################################################################

功 能:本函数的作用是用逐点比较法来画一条直线

格 式:void myline1(int x1,int y1,int x2,int y2,int color)

参数说明:x1,y1是起始点坐标,x2,y2是终止点,color是画线的颜色

调用示例:myline1(10,20,500,440,4)

###############################################################################

*/

void myline1(int x1,int y1,int x2,int y2,int color)

{

/*变量定义开始(2007/10/16增加)*/

int iTx/*x轴终点的相对坐标xa或临时变量*/

int iTy/*y轴终点的相对坐标ya或临时变量*/

int iDx/*x轴方向的步长dx*/

int iDy/*y轴方向的步长dy*/

int iFt/*偏差Fm*/

int iSt/*记数循环数(dx+dy)S*/

int iXt/*x方向循环变量xm*/

int iYt/*y方向循环变量ym*/

/*变量定义结束*/

/*变量初始化开始*/

/*如果是第三象限或第四象限则换成第一或第二象限*/

if(y2<y1)

{

iTx=x1

x1=x2

x2=iTx

iTy=y1

y1=y2

y2=iTy

}

iTx=x2-x1/*取x轴的相对坐标*/

iTy=y2-y1/*取y轴的相对坐标*/

iDx=1

iDy=1

iFt=0

iSt=iTx+iTy

if(iTx<0)iSt=-1*iTx+iTy/*如果在第二象限,则x轴方向步长取负值*/

iXt=0

iYt=0

/*变量初始化结束*/

/*数据处理开始*/

while(iSt>0)

{

putpixel(x1+iXt,y1+iYt,color)

if(iTx>=0) /*如果在第一象限*/

{

if(iFt<0) /*如果偏差小于0*/

{

iYt+=iDy/*y方向走一步*/

iFt+=iTx

}

else /*如果偏差大于或等于0*/

{

iXt+=iDx/*x方向走一步*/

iFt-=iTy

}

}

else

{

if(iFt<0) /*如果偏差小于0*/

{

iXt-=iDx/*负x方向走一步*/

iFt+=iTy

}

else /*如果偏差大于或等于0*/

{

iYt+=iDy/*y方向走一步*/

iFt+=iTx

}

}

iSt--

}

}

/*

###############################################################################

功 能:本函数的作用是用来画一条直线

格 式:void myline2(int x1,int y1,int x2,int y2,int color)

参数说明:x1,y1是起始点坐标,x2,y2是终止点,color是画线的颜色

调用示例:myline2(10,20,500,440,4)

###############################################################################

*/

int myline2(int x1,int y1,int x2,int y2,int color)

{

int iX/*x方向的坐标变量*/

int iY/*y方向的坐标变量*/

int iTx/*x方向的步长变量*/

int iTy/*y方向的步长变量*/

float fDx/*x方向的差分变量*/

float fDy/*y方向的差分变量*/

float fMinf/*算法中的f*/

float fMaxF/*算法中的F*/

float fS/*终点判断变量*/

fMinf=0.5/*f=0.5*/

iX=x1

iY=y1

putpixel(x1,y1,color)

if(x1==x2&&y1==y2) /*如果终点和起始点相同*/

{

return(1)

}

iTx=1

iTy=1

fDx=(float)(x2-x1)

fDy=(float)(y2-y1)

fMaxF=fDy/fDx>0?fDy/fDx:(-fDy/fDx)/*F=|dy/dx|*/

if(fDx<0)iTx=-1

if(fDy<0)iTy=-1

fS=fDx>0?fDx:(-fDx)

if(fMaxF==1) /*如果F=1*/

{

iX=x1

iY=y1

while(fS>0)

{

iX+=iTx/*x方向走一步*/

iY+=iTy/*y方向走一步*/

putpixel(iX,iY,color)

fS--

}

}

else if(fMaxF>1) /*如果F>1*/

{

fS+=fDy>0?fDy:(-fDy)

while(fS>0)

{

iY+=iTy/*y方向走一步*/

putpixel(iX,iY,color)

fMinf+=1/fMaxF/*f=f+1/F*/

fS--

if(fMinf>=1) /*如果f>=1*/

{

iX+=iTx/*x方向走一步*/

fMinf--/*f=f-1*/

putpixel(iX,iY,color)

fS--

}

}

}

else /*如果F<1*/

{

fS+=fDy>0?fDy:(-fDy)

while(fS>0)

{

iX+=iTx/*x方向走一步*/

putpixel(iX,iY,color)

fMinf+=fMaxF/*f=f+F*/

fS--

if(fMinf>=1) /*如果f>=1*/

{

iY+=iTy/*y方向走一步*/

fMinf--/*f=f-1*/

putpixel(iX,iY,color)

fS--

}

}

}

}

变量

GLSL的变量命名方式与C语言类似。变量的名称可以使用字母,数字以及下划线,但变量名不能以数字开头,还有变量名不能以gl_作为前缀,这个是GLSL保留的前缀,用于GLSL的内部变量。当然还有一些GLSL保留的名称是不能够作为变量的名称的。

基本类型

除了布尔型,整型,浮点型基本类型外,GLSL还引入了一些在着色器中经常用到的类型作为基本类型。这些基本类型都可以作为结构体内部的类型。如下表:

类型 描述

void 跟C语言的void类似,表示空类型。作为函数的返回类型,表示这个函数不返回值。

bool 布尔类型,可以是true 和false,以及可以产生布尔型的表达式。

int 整型 代表至少包含16位的有符号的整数。可以是十进制的,十六进制的,八进制的。

float 浮点型

bvec2 包含2个布尔成分的向量

bvec3 包含3个布尔成分的向量

bvec4 包含4个布尔成分的向量

ivec2 包含2个整型成分的向量

ivec3 包含3个整型成分的向量

ivec4 包含4个整型成分的向量

mat2 或者 mat2x2 2×2的浮点数矩阵类型

mat3或者mat3x3 3×3的浮点数矩阵类型

mat4x4 4×4的浮点矩阵

mat2x3 2列3行的浮点矩阵(OpenGL的矩阵是列主顺序的)

mat2x4 2列4行的浮点矩阵

mat3x2 3列2行的浮点矩阵

mat3x4 3列4行的浮点矩阵

mat4x2 4列2行的浮点矩阵

mat4x3 4列3行的浮点矩阵

sampler1D 用于内建的纹理函数中引用指定的1D纹理的句柄。只可以作为一致变量或者函数参数使用

sampler2D 二维纹理句柄

sampler3D 三维纹理句柄

samplerCube cube map纹理句柄

sampler1DShadow 一维深度纹理句柄

sampler2DShadow 二维深度纹理句柄

结构体

结构体

结构体可以组合基本类型和数组来形成用户自定义的类型。在定义一个结构体的同时,你可以定义一个结构体实例。或者后面再定义。

struct surface {float indexOfRefraction

vec3 colorfloat turbulence

} mySurface

surface secondeSurface

你可以通过=为结构体赋值,或者使用 ==,!=来判断两个结构体是否相等。

mySurface = secondSurface

mySurface == secondSurface

只有结构体中的每个成分都相等,那么这两个结构体才是相等的。访问结构体的内部成员使用. 来访问。

vec3 color = mySurface.color + secondSurface.color

结构体至少包含一个成员。固定大小的数组也可以被包含在结构体中。GLSL的结构体不支持嵌套定义。只有预先声明的结构体可以嵌套其中。

struct myStruct {

vec3 points[3]//固定大小的数组是合法的

surface surf //可以,之前已经定义了

struct velocity { //不合法float speed

vec3 direction

} velo

subSurface sub//不合法,没有预先声明;}struct subSurface { int id

}

数组

GLSL中只可以使用一维的数组。数组的类型可以是一切基本类型或者结构体。下面的几种数组声明是合法的:

surface mySurfaces[]

vec4 lightPositions[8]

vec4 lightPos[] = light www.hnnedu.com Positionsconst int numSurfaces = 5

surface myFiveSurfaces[numSurfaces]float[5] values

指定显示大小的数组可以作为函数的参数或者使返回值,也可以作为结构体的成员.数组类型内建了一个length()函数,可以返回数组的长度。

lightPositions.length() //返回数组的大小 8

最后,你不能定义数组的数组。

修饰符

变量的声明可以使用如下的修饰符。

修饰符 描述

const 常量值必须在声明是初始化。它是只读的不可修改的。

attribute 表示只读的顶点数据,只用在顶点着色器中。数据来自当前的顶点状态或者顶点数组。它必须是全局范围声明的,不能再函数内部。一个attribute可以是浮点数类型的标量,向量,或者矩阵。不可以是数组或则结构体

uniform 一致变量。在着色器执行期间一致变量的值是不变的。与const常量不同的是,这个值在编译时期是未知的是由着色器外部初始化的。一致变量在顶点着色器和片段着色器之间是共享的。它也只能在全局范围进行声明。

varying 顶点着色器的输出。例如颜色或者纹理坐标,(插值后的数据)作为片段着色器的只读输入数据。必须是全局范围声明的全局变量。可以是浮点数类型的标量,向量,矩阵。不能是数组或者结构体。

centorid varying 在没有多重采样的情况下,与varying是一样的意思。在多重采样时,centorid varying在光栅化的图形内部进行求值而不是在片段中心的固定位置求值。

invariant (不变量)用于表示顶点着色器的输出和任何匹配片段着色器的输入,在不同的着色器中计算产生的值必须是一致的。所有的数据流和控制流,写入一个invariant变量的是一致的。编译器为了保证结果是完全一致的,需要放弃那些可能会导致不一致值的潜在的优化。除非必要,不要使用这个修饰符。在多通道渲染中避免z-fighting可能会使用到。

in 用在函数的参数中,表示这个参数是输入的,在函数中改变这个值,并不会影响对调用的函数产生副作用。(相当于C语言的传值),这个是函数参数默认的修饰符

out 用在函数的参数中,表示该参数是输出参数,值是会改变的。

inout 用在函数的参数,表示这个参数即是输入参数也是输出参数。

内置变量

内置变量可以与固定函数功能进行交互。在使用前不需要声明。顶点着色器可用的内置变量如下表:

名称 类型 描述

gl_Color vec4 输入属性-表示顶点的主颜色

gl_SecondaryColor vec4 输入属性-表示顶点的辅助颜色

gl_Normal vec3 输入属性-表示顶点的法线值

gl_Vertex vec4 输入属性-表示物体空间的顶点位置

gl_MultiTexCoordn vec4 输入属性-表示顶点的第n个纹理的坐标

gl_FogCoord float 输入属性-表示顶点的雾坐标

gl_Position vec4 输出属性-变换后的顶点的位置,用于后面的固定的裁剪等操作。所有的顶点着色器都必须写这个值。

gl_ClipVertex vec4 输出坐标,用于用户裁剪平面的裁剪

gl_PointSize float 点的大小

gl_FrontColor vec4 正面的主颜色的varying输出

gl_BackColor vec4 背面主颜色的varying输出

gl_FrontSecondaryColor vec4 正面的辅助颜色的varying输出

gl_BackSecondaryColor vec4 背面的辅助颜色的varying输出

gl_TexCoord[] vec4 纹理坐标的数组varying输出

gl_FogFragCoord float 雾坐标的varying输出

片段着色器的内置变量如下表:

名称 类型 描述

gl_Color vec4 包含主颜色的插值只读输入

gl_SecondaryColor vec4 包含辅助颜色的插值只读输入

gl_TexCoord[] vec4 包含纹理坐标数组的插值只读输入

gl_FogFragCoord float 包含雾坐标的插值只读输入

gl_FragCoord vec4 只读输入,窗口的x,y,z和1/w

gl_FrontFacing bool 只读输入,如果是窗口正面图元的一部分,则这个值为true

gl_PointCoord vec2 点精灵的二维空间坐标范围在(0.0, 0.0)到(1.0, 1.0)之间,仅用于点图元和点精灵开启的情况下。

gl_FragData[] vec4 使用glDrawBuffers输出的数据数组。不能与gl_FragColor结合使用。

gl_FragColor vec4 输出的颜色用于随后的像素操作

gl_FragDepth float 输出的深度用于随后的像素操作,如果这个值没有被写,则使用固定功能管线的深度值代替

表达式

操作符

GLSL语言的操作符与C语言相似。如下表(操作符的优先级从高到低排列)

操作符 描述

() 用于表达式组合,函数调用,构造

[] 数组下标,向量或矩阵的选择器

. 结构体和向量的成员选择

++ – 前缀或后缀的自增自减操作符

+ – ! 一元操作符,表示正 负 逻辑非

* / 乘 除操作符

+ - 二元操作符 表示加 减操作

<><= >= == != 小于,大于,小于等于, 大于等于,等于,不等于 判断符

&&|| ^^ 逻辑与 ,或, 异或

?: 条件判断符

= += –= *= /= 赋值操作符

, 表示序列

像 求地址的&和 解引用的 * 操作符不再GLSL中出现,因为GLSL不能直接操作地址。类型转换操作也是不允许的。 位操作符(&,|,^,~, <<, >>,&=, |=, ^=, <<=, >>=)是GLSL保留的操作符,将来可能会被使用。还有求模操作(%,%=)也是保留的。

数组访问

数组的下标从0开始。合理的范围是[0, size - 1]。跟C语言一样。如果数组访问越界了,那行为是未定义的。如果着色器的编译器在编译时知道数组访问越界了,就会提示编译失败。

vec4 myColor, ambient, diffuse[6], specular[6]

myColor = ambient + diffuse[4] + specular[4]

构造函数

构造函数可以用于初始化包含多个成员的变量,包括数组和结构体。构造函数也可以用在表达式中。调用方式如下:

vec3 myNormal = vec3(1.0, 1.0, 1.0)

greenTint = myColor + vec3(0.0, 1.0, 0.0)

ivec4 myColor = ivec4(255)

还可以使用混合标量和向量的方式来构造,只要你的元素足以填满该向量。

vec4 color = vec4(1.0, vec2(0.0, 1.0), 1.0)

vec3 v = vec3(1.0, 10.0, 1.0)

vec3 v1 = vec3(v)

★常见的文件后缀名

.ACA:Microsoft的代理使用的角色文档

.acf:系统管理配置

.acm:音频压缩管理驱动程序,为Windows系统提供各种声音格式的编码和解码功能

.aif:声音文件,支持压缩,可以使用Windows Media Player和QuickTime Player播放

.AIF:音频文件,使用Windows Media Player播放

.AIFC:音频文件,使用Windows Media Player播放

.AIFF:音频文件,使用Windows Media Player播放

.ani:动画光标文件扩展名,例如动画沙漏。

.ans:ASCII字符图形动画文件

.arc:一种较早的压缩文件,可以使用WinZip,WinRAR,PKARC等软件打开

.arj:压缩文件。可以使用WinZip,WinRAR,PKARC等软件打开

.asf:微软的媒体播放器支持的视频流,可以使用Windows Media Player播放

.asp:微软的视频流文件,可以使用Windows Media Player打开

.asp:微软提出的Active Server Page,是服务器端脚本,常用于大型网站开发,支持数据库连接,类似PHP。可以使用Visual InterDev编写,是目前的大热门

.asx:Windows Media 媒体文件的快捷方式

.au:是Internet中常用的声音文件格式,多由Sun工作站创建,可使用软件Waveform Hold and Modify 播放。Netscape Navigator中的LiveAudio也可以播放.au文件

.avi:一种使用Microsoft RIFF规范的Windows多媒体文件格式,用于存储声音和移动的图片

.bak:备份文件,一般是被自动或是通过命令创建的辅助文件,它包含某个文件的最近一个版本,并且具有于该文件相同的文件名

.bas Basic:语言源程序文件,可编译成可执行文件,目前使用Basic开发系统的是Visual Basic

.bat:批处理文件,在MS-DOS中,.bat文件是可执行文件,有一系列命令构成,其中可以包含对其他程序的调用

.bbs:电子告示板系统文章信息文件

.bfc:Windows的公文包文件

.bin:二进制文件,其用途依系统或应用而定

.bmp:Bitmap位图文件,这是微软公司开发Paint的自身格式,可以被多种Windows和Windows NT平台及许多应用程序支持,支持32位颜色,用于为Windows界面创建图标的资源文件格式。

.c:C语言源程序文件,在C语言编译程序下编译使用

.cab:Microsoft制订的压缩包格式,常用于软件的安装程序,使用Windows自带的实用程序,Extract.exe可以对其解压缩,WinZip,WinRAR等都支持这种格式

.cal:Windows 中的日历文件

.cdf:Internet Explorer的频道文件

.cdr:CorelDraw中的一种图形文件格式,它是所有CorelDraw应用程序中均能够使用的一种图形图像文件格式

.cdx:索引文件,存在于Dbase,Foxbase,Foxpro系统软件环境下

.cfg:配置文件,系统或应用软件用于进行配置自己功能,特性的文件

.chm:编译过后的HTML文件,常用于制作帮助文件和电子文档

.clp:在Windows下剪贴板中的文件格式

.cmd:用于Windows NT/2000的批处理文件,其实与BAT文件功能相同,只是为了与DOS/Windows 9x下的BAT有所区别

.cmf:声卡标准的音乐文件,FM合成器等可以回放

.cnf:NetMeetting会议连接文件

.cnt:联机帮助文件目录索引文件,通常和同名的.hlp文件一起保存

.col:由Autodesk Animator,Autodesk Animator Por等程序创建的一种调色板文件格式,其中存储的是调色板中各种项目的RGB值

.com:DOS可执行命令文件,一般小于64KB

.cpl:控制面板扩展文件,Windows操作系统使用

.cpp:C++语言源程序,非常强大的语言,在各种平台中都有相应的开发系统

.crd:Windows中的卡片文件

.crt:用于安全方面的证书认证文件

.cur:Windows下的光标资源文件格式,可用光标编辑软件编辑

.css:Text/css文件

.dat:数据文件,在应用程序中使用

.dat:VCD中的图象声音文件,VCD播放软件可调用,或是通过VCD机播放

.dbf:数据库文件,Foxbase,Dbase,Visual FoxPro,等数据库处理系统所产生的数据库文件

.dcx:传真浏览文档文件

.ddi:映象文件,DUP,HD,IMG等工具可展开

.dev:设备驱动程序

.dib:设备无关位图文件,这是一种文件格式,其目的是为了保证用某个应用程序创建的位图图形可以被其它应用程序装载或显示一样

.dir:目录文件

.dll:Windows动态连接库,几乎无处不在,但有时由于不同版本DLL冲突会造成败各种各样的问踢

.doc:是目前市场占有率最高的办公室软件Microsoft Office中的字处理软件Word创建的文档

.dos:Windows保留的MS-DOS的某些系统文件

.dot:Microsoft Word的文档模板文件,通过模板可以简化一些常用格式文档的创建工作,而且可以内嵌VBA程序来实现某些自动化功能

.drv:设备驱动程序文件,用在各种系统中

.dwg:AutoCAD的图纸文件,也是许多绘图软件都支持的格式,常用于共享数据

.dxb:AutoCAD创建的一中图形文件格式

.dxf:图形交换格式,一种计算机辅助设计的文件格式,最初开发用来与AutoCAD一起使用,以便于图形文件在应用程序之间的传递,它以ASCII方式储存图形,在表现图形的大小方面十分精确

.der:Certiticate文件

.dic:Txt文件

.emf:由Microsoft公司开发的Windows 32位扩展图元文件格式,其总体设计目标是要弥补在Microsoft Windows 3.1(Win16)中用的*.wmf文件格式的不足,使得图元文件更加易于使用

.eps:用PostScript语言描述的一种图形文件格式,以文本文件保存,在PostScript图形打印机上能打印出高品质的图形图象,最高能表示32位图形图象

.err:编译错误文件,存在于Dbase,Foxbase,Foxpro系列软件环境下

.exe:可执行文件,虽然后缀名相同,但具有不同的格式和版本

.exp:3DS使用的显示卡驱动程序

.exc:Txt文件

.flc:Autodesk Animator和Animatorpro的动画文件,支持256色,最大的图象象索是64000*64000,支持压缩,广泛用于动画图形中的动画序列,计算机辅助设计和计算机游戏应用程序

.fnd:保存的搜索结果

.fon:点阵字库文件

.for:Fortran语言程序

.fot:指向字体的快捷键

.fp: 配置文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下

.fpt:备注字段文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下

.frt:报表文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下

.frx:报表文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下

.fxp:编译后的程序,存在于Dbase,Foxbase,Foxpro系列软件的环境下

.gif:在各种平台的各种图形处理软件上均能够处理的,经过压缩的一种图形文件格式

.grh:方正公司的图象排版文件

.grp:Windows下的程序管理器产生的组窗口文件

.goc:Gocserve

.gra:MSGraph.Chart.5

.h: C语言源程序头文件

.hlp:Windows应用程序帮助文件

.hqx:Macintosh中使用BinHex将二进制文件编码为7位的文本文件,大多数Macintosh文件皆以.hqx出现(.bin极少使用),在Macintosh中,可使用StuffIt Expander对.hqx解码,在Windows中可使用BinHex 13解码

.ht: 超级终端

.htm:保存超文本描述语言的文本文件,用于描述各种各样的网页,使用各种浏览器打开

.html:同.htm文件

.icm:图象配色描述文件

.ico:Windows中的图标文件,可以包含同一个图标的多种格式,使用图标编辑软件创建

.idf:MIDI乐器定义

.idx:索引文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下

.iff:文件交换格式文件,这种文件格式多用于Amiga平台,在这种平台上它几乎可以存储各种类型的数据,在其它平台上,IFF文件格式多用于存储图象和声音文件

.image:MAcintosh磁盘映象文件,常见于萍果机的FTP网点,在Macintosh中由Shrink Wrap处理

.ime:Windows下的输入法文件

.img:磁盘映象文件,用HD-COPY,WinImage等工具打开后可以恢复到一张磁盘上

.inc:汇编语言包含文件,类似C/C++中的.H文件

.inf:Windows下的软件安装信息,Windows的标准安装程序根据此文件内的安装信息对软件,驱动程序等进行安装

.ini:Windows中的初始化信息文件,已经用的不多了,新的应用程序将设置保存在系统的注册表中

.jar:一种压缩文件,ARJ的新版本,不过不太流行,可以使用WinJar,Winrar等打开

.jpeg:一种图片压缩文件,同.jpg

.jpg:静态图象专家组制订的静态图象压缩标准,具有很高的压缩比,使用非常广泛,可使用PhotoShop等图象处理软件创建

.lnk:快捷方式,这个文件指向另一个文件,开始菜单的程序文件夹下每条项目都是一个LNK文件

.log:日志文件,通常用来记录一些事件之类

.lzh:一种古老的压缩文件,可以使用WinRAR打开

.mac:Macintosh中使用的一中灰度图形文件格式,在Macintosh Paintbrush中使用,其分辨率只能是720*567

.mag :图形文件格式

.mdb :Microsoft Access使用的数据库格式,是非常流行的桌面数据库

.men :内存应用文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下

.mid :音频压缩文件,曾经非常流行,不过在现在的软件中用的很少了

rle :一种压缩过的位图文件格式,RLE压缩方案是一种极其成熟的压缩方案,特点是无损失压缩,既节省了磁盘空间又不损失任何图像数据,但在打开这种压缩文件时,要花费更多时间,此外,一些兼容性不太好的应用程序可能会搭不开

.rm :Windows下的RealPlayer所支持的视频压缩文件,网上非常流行的流式视频文件,很多实时视频新闻等都是采用这种格式的,不过,最新的Windows Media Video V8已经对其发起了强大的攻势

.rmi :MIDI音序文件

.rtf :丰富文本格式文件,以纯文本描述内容,能够保存各种格式信息,可以用写字版,Word等创建

.sav :存档文件

.scp :用于Windows系统中Internet拨号用户,自动拨号登录用的脚本文件,可避免手动登录时繁琐的键盘输入

.scr :屏障保护文件

.sct :屏幕文件

.scx :屏幕文件

.set :Microsoft备份集文件,用于保存要备份的内容,设置等信息

.shb :指向一个文档的快捷方式

.snd :Mac声音文件,Apple计算机公司开发的声音文件格式,被Macintosh平台和多种Macintosh应用程序所支持,支持某些压缩

.sql:查询文件,在Dbase,Foxbase,Foxpro系列软件的环境下使用

.svg :SVG可以算是目前最火热的图像文件格式了,它是基于XML由WorldWideWebConsortium联盟开发的,SVG是可缩放的矢量图形

.svx :Amiga声音文件,Commodore所开发的声音文件格式,被Amiga平台和应用程序所支持,不支持压缩

.swf :flash是Micromedia公司的产品,严格说它是一种动画编辑软件,实际上它是制作出一种后缀名为.swf的动画,这种格式的动画能用比较小的体积来表现丰富的多媒体形式,并且还可以与HTML文件达到一种"水乳交融"的境界

.swg:虚拟内存交换文件,由操作系统使用

.sys:系统文件,驱动程序等,在不同的操作系统中有不同的定义

图片格式

以下内容来自:http://support.microsoft.com/default.aspx?scid=kbzh-cn320314

图片格式:光栅图片

BMP:Windows 位图

Windows 位图可以用任何颜色深度(从黑白到 24 位颜色)存储单个光栅图像。Windows 位图文件格式与其他 Microsoft Windows 程序兼容。它不支持文件压缩,也不适用于 Web 页。

从总体上看,Windows 位图文件格式的缺点超过了它的优点。为了保证照片图像的质量,请使用 PNG 文件、JPEG 文件或 TIFF 文件。BMP 文件适用于 Windows 中的墙纸。

优点:? BMP 支持 1 位到 24 位颜色深度。

? BMP 格式与现有 Windows 程序(尤其是较旧的程序)广泛兼容。

缺点:? BMP 不支持压缩,这会造成文件非常大。

? BMP 文件不受 Web 浏览器支持。

PCX:PC 画笔

“PC 画笔”图片(也被称为 Z-Soft 位图)会以任何颜色深度存储单个光栅图像。画笔图片更广泛地用于较早的 Windows 程序和基于 MS-DOS 的程序。画笔图片与许多较新的程序兼容。PCX 图片支持“行程长度编码”(RLE) 内部压缩。

优点:? PCX 在许多基于 Windows 的程序和基于 MS-DOS 的程序间是标准格式。

? PCX 支持内部压缩。

缺点:? PCX 不受 Web 浏览器支持。

PNG:可移植网络图形

PNG 图片以任何颜色深度存储单个光栅图像。PNG 是与平台无关的格式。

优点:? PNG 支持高级别无损耗压缩。

? PNG 支持 alpha 通道透明度。

? PNG 支持伽玛校正。

? PNG 支持交错。

? PNG 受最新的 Web 浏览器支持。

缺点:? 较旧的浏览器和程序可能不支持 PNG 文件。

? 作为 Internet 文件格式,与 JPEG 的有损耗压缩相比,PNG 提供的压缩量较少。

? 作为 Internet 文件格式,PNG 对多图像文件或动画文件不提供任何支持。GIF 格式支持多图像文件和动画文件。

JPEG:联合摄影专家组

JPEG 图片以 24 位颜色存储单个光栅图像。JPEG 是与平台无关的格式,支持最高级别的压缩,不过,这种压缩是有损耗的。渐近式 JPEG 文件支持交错。

可以提高或降低 JPEG 文件压缩的级别。但是,文件大小是以图像质量为代价的。压缩比率可以高达 100:1。(JPEG 格式可在 10:1 到 20:1 的比率下轻松地压缩文件,而图片质量不会下降。)JPEG 压缩可以很好地处理写实摄影作品。但是,对于颜色较少、对比级别强烈、实心边框或纯色区域大的较简单的作品,JPEG 压缩无法提供理想的结果。有时,压缩比率会低到 5:1,严重损失了图片完整性。这一损失产生的原因是,JPEG 压缩方案可以很好地压缩类似的色调,但是 JPEG 压缩方案不能很好地处理亮度的强烈差异或处理纯色区域。

优点:? 摄影作品或写实作品支持高级压缩。

? 利用可变的压缩比可以控制文件大小。

? 支持交错(对于渐近式 JPEG 文件)。

? JPEG 广泛支持 Internet 标准。

缺点:? 有损耗压缩会使原始图片数据质量下降。

? 当您编辑和重新保存 JPEG 文件时,JPEG 会混合原始图片数据的质量下降。这种下降是累积性的。

? JPEG 不适用于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片。

GIF:图形交换格式

GIF 图片以 8 位颜色或 256 色存储单个光栅图像数据或多个光栅图像数据。GIF 图片支持透明度、压缩、交错和多图像图片(动画 GIF)。

GIF 透明度不是 alpha 通道透明度,不能支持半透明效果。GIF 压缩是 LZW 压缩,压缩比大概为 3:1。GIF 文件规范的 GIF89a 版本中支持动画 GIF。

优点:? GIF 广泛支持 Internet 标准。

? 支持无损耗压缩和透明度。

? 动画 GIF 很流行,易于使用许多 GIF 动画程序创建。

缺点:? GIF 只支持 256 色调色板,因此,详细的图片和写实摄影图像会丢失颜色信息,而看起来却是经过调色的。

? 在大多数情况下,无损耗压缩效果不如 JPEG 格式或 PNG 格式。

? GIF 支持有限的透明度,没有半透明效果或褪色效果(例如,alpha 通道透明度提供的效果)。

TIFF:标记图像文件格式

TIFF 以任何颜色深度存储单个光栅图像。TIFF 可以被认为是印刷行业中受到支持最广的图形文件格式。TIFF 支持可选压缩,不适用于在 Web 浏览器中查看。

TIFF 格式是可扩展的格式。这意味着程序员可以修改原始规范以添加功能或满足特定的需要。修改规范可能会导致不同类型的 TIFF 图片之间不兼容。

优点:? TIFF 是广泛支持的格式,尤其是在 Macintosh 计算机和基于 Windows 的计算机之间。

? 支持可选压缩。

? 可扩展格式支持许多可选功能。

缺点:? TIFF 不受 Web 浏览器支持。

? 可扩展性会导致许多不同类型的 TIFF 图片。并不是所有 TIFF 文件都与所有支持基本 TIFF 标准的程序兼容。

图片格式:矢量图片

DXF:AutoCAD 绘图交换文件

DXF 是 Autodesk AutoCAD 程序使用的基于矢量的 ASCII 格式。AutoCAD 可以提供非常详细的完全可以缩放的图表。

优点:? 您可以使用 AutoCAD 创建非常详细和精确的图表和图形。

? AutoCAD 文件在建筑、设计和雕刻行业很流行。

缺点:? AutoCAD 在 Office 中受到的支持很有限,Office 支持 R12 之前的 AutoCAD 版本。

? AutoCAD 具有很陡的学习曲线。请注意,其他图形程序也可以导出 DXF 图片。

CGM:计算机图形图元文件

CGM 图元文件可以包含矢量信息和位图信息。它是由许多组织和政府机构(包括“英国标准协会”(BSI)、“美国国家标准协会”(ANSI) 和美国国防部)使用的国际性标准化文件格式。

优点:? CGM 是国际标准格式。

CDR:CorelDRAW!

CorelDRAW! 图元文件可以同时包含矢量信息和位图信息。

优点:? CDR 广泛用于印前行业和艺术设计行业。

缺点:? CDR 在 Office 中受到的支持很有限,Office 支持 CorelDRAW! 6 版和更早版本。

WMF:Windows 图元文件

“Windows 图元文件”是 16 位图元文件格式,可以同时包含矢量信息和位图信息。它针对 Windows 操作系统进行了优化。

优点:? WMF 是 Windows 标准格式,可很好地在 Office 中使用。

EPS:Encapsulated PostScript

“Encapsulated PostScript”格式是一种专用的打印机描述语言,可以描述矢量信息和位图信息。

优点:? EPS 可在任何 PostScript 打印机上进行准确的效果呈现。

? EPS 是行业标准格式。

缺点:? 屏幕显示可能与输出的显示不一致。屏幕呈现可能会是低分辨率的,可能会是不同图像,或只是占位符图像。

? EPS 文件旨在用于输出。它们不是用于在屏幕上显示信息的最适合的格式。

EMF:增强型图元文件

“增强型图元文件”是 32 位格式,可以同时包含矢量信息和位图信息。此格式是对“Windows 图元文件格式”的改进,包含了一些扩展功能,例如,下面的功能:

? 内置的缩放比例信息

? 与文件一起保存的内置说明

? 调色板和设备独立性方面的改进

EMF 格式是可扩展的格式,这意味着程序员可以修改原始规范以添加功能或满足特定的需要。此修改可能会导致不同类型的 EMF 图片之间不兼容。

优点:? 可扩展的文件格式

? 与 WMF 相比,经过改进的功能

缺点:? 可扩展性会导致许多不同类型的 EMF 图片,并不是所有 EMF 文件都与所有支持 EMF 标准的程序兼容。

PICT:Macintosh 图片

PICT 文件是用于 Macintosh 计算机的 32 位图元文件格式。PICT 文件使用“行程长度编码”(RLE) 内部压缩,该内部压缩工作相当良好。如果安装了 QuickTime,则 PICT 文件支持 JPEG 压缩(仅限 Macintosh)。

优点:? PICT 是用于 Macintosh 计算机屏幕显示的最佳文件格式。

? 当您从 Macintosh 计算机输出到非 PostScript 打印机时,PICT 是要使用的最佳输出格式。

缺点:? 在平台间移动它们时,字体可能显示得不正确。

? 必须安装 QuickTime 才能正确查看某些 PICT 文件。

分辨率和颜色深度

这一部分讨论了用于光栅图片的适当颜色深度和分辨率。如果您保存图片时使用了正确的分辨率和颜色设置,您就会创建出较小的文件。较小的文件意味着更小、更快的文档和演示文稿。您最感兴趣的是:让您的图片在图片使用要求范围内尽可能小。

屏幕显示

颜色数目 Internet 使用 非 Internet 使用

1(黑白) GIF,分辨率为 72 像素/英寸 (ppi) GIF,分辨率为 72 像素/英寸 (ppi)

16 GIF,分辨率为 72 ppi GIF,分辨率为 72 ppi

256(简单图片)* GIF,分辨率为 72 ppi GIF,分辨率为 72 ppi

256(复杂图片)* JPEG,分辨率为 72 ppi JPEG,分辨率为 72 ppi

超过 256 JPEG 或 PNG,分辨率为 72 ppi JPEG、PNG 或 TIFF,分辨率为 72 ppi

注意:Microsoft 推荐的分辨率为 72 像素/英寸,因为大多数监视器的分辨率位于 60 像素/英寸与 80 像素/英寸之间。使用较高的分辨率保存不会产生较高的显示质量,因为您的监视器无法显示比监视器中实际存在的像素更多的像素。您应该根据图片已完成的大小而不是原始大小来计算每英寸的点数。例如,如果您在扫描一个 8.5 x 2 英寸的信头以便在 Web 页上使用,已完成的宽度是 2 英寸,您可以使用 72 ppi 来扫描这 2 英寸,总计为 144 像素。当它的大小被设置为 2 英寸并在显示视器上显示时,最终的文件看起来效果会非常好。

*注意:在 256 色,JPEG 文件可提供比 GIF 文件高的压缩级别。但是,在压缩某些简单文件时,JPEG 压缩不如 GIF 压缩有效。

? 如果您的图片是灰度图片,具有一大块纯色区域,或者具有高对比度(浅色区域和深色区域之间具有强烈差异)的区域,请选择 GIF 格式。

? 如果您的图片是彩色图片,并包含多种不同的颜色(色调),这些颜色(色调)的亮度或暗度(值)类似,请选择 JPEG 格式,因为 JPEG 格式可以提供更好的压缩。JPEG 压缩根据色调工作,适用于处理值类似的不同色调。JPEG 压缩不能很好地处理具有不同值的类似色调。

打印输出

如何创建良好的打印输出是一个复杂的主题,因为可供使用的打印机数量众多,而且每台打印机生成彩色输出和灰度输出的功能是不同的。产生良好打印输出的主要因素是您的打印机能够打印的每英寸行数 (LPI)。

要以彩色或灰度模式打印,打印机必须在中间色调中打印。中间色调是排列在网格中的点的阵列,这些点将每个图像像素表示为一个灰色阴影。对于深灰色,网格中的大多数点会被填充。对于浅灰色,网格上只有很少的点被填充。打印机的 LPI 设置决定了此网格的大小。LPI 越高,网格就越小,打印机能够呈现的灰色阴影就越少。

要以彩色打印,打印机必须打印彩色点的重叠行。每个点都是在不同于其他点的角度上设置的,会略有偏移,所以这些点不能完全相互覆盖。这种度量单位称为“屏幕频率”,以组成该颜色的点的行旋转度数表示。

下表可帮助您选择用于扫描的最佳分辨率,以点/英寸 (dpi) 为单位。

打印机类型 输出 dpi 输出 LPI 扫描 ppi

Laser printer 300 55-65 120

Laser printer 600 65-85 150

Ink-Jet printer 300 50-60 110

Dye-Sub printer 300 55-70 125

Imagesetter 1250+ 120-150 300

要计算您的目标扫描分辨率,您可以将打印机的 LPI 乘以 2。这是一般规则。要弄清楚您的打印机的 LPI,请参阅您的打印机文档。

注意:当您应用 LPI 乘以 2 的一般规则时,您必须进行试验。有些打印机支持非常高的分辨率。如果您使用大于 300 ppi 的分辨率保存图片,较大的图片可能会占用大量的磁盘空间,而且会减慢您的计算机上的其他操作。文档中的多个大图片可能会导致某个程序停止响应,或者可能会导致 Windows 停止响应。

该规则的唯一例外是,纯黑白图像,即“线型”图像。这些图像使用 1 位存储颜色信息。请使用 1 对 1 的比率扫描这些图像。如果您的打印机分辨率是 600 dpi,请在“线型”模式中使用 600 ppi 扫描这些图像。

如果您希望您的图片以灰度显示或者少于 256 色,请使用 TIFF 格式或 GIF 格式。TIFF 格式是印刷行业用于图形的标准,因为 TIFF 格式不使用有损耗压缩方案。其他格式,例如 JPEG,使用有损耗压缩方案。TIFF 还支持多层透明度,而几乎没有其他格式支持多层透明度。

如果图片多于 256 色,请用 TIFF 格式或 PNG 格式保存图片。如果您需要透明度,Microsoft 建议使用 PNG 格式。如果您不需要透明度,请使用 TIFF 格式。

Microsoft 建议您根据已完成图片大小的打印机分辨率保存图片。例如,假定您有一个 8.5 x 2 英寸的信头,您需要以 2 英寸的大小打印该信头。如果您的打印机支持 600 dpi 和 85 LPI,请将该图片分辨率设置为 2 英寸时为 150 ppi,即可得到 300 x 71 像素的大小。