第5章 GDI+图形设备接口加

第5章  GDI+图形设备接口加
第5章  GDI+图形设备接口加

第5章 GDI+

GDI+(Graphics Device Interface Plus 图形设备接口加)是Windows XP 和Windows Server 2003操作系统的图形子系统,也是.NET 框架的重要组成部分和窗体绘图的主要工具,负责在屏幕和打印机上绘制图形图像和显示信息。

顾名思义,GDI+是Windows 早期版本所提供的图形设备接口GDI 的后续版本。GDI+是一种应用程序编程接口(API),分别通过一套C++类和一套部署为托管代码的类来展现,这两套类分别被称为GDI+的“C++封装”和“托管类接口”。

GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows 图形图像程序开发的主要工具。

本章将介绍GDI+的特点和新增功能,以及GDI+ API 的具体使用方法,包括二维矢量图形的绘制、图像处理的应用、以及文字的显示等。

由于本章内容较多,有些章节不作为基本要求,用*号表示的章节是可选的。

5.1 概述

GDI+与GDI 一样,都具有设备无关性。而且GDI+是建立在GDI 之上的一种高层接口,供Windows 应用程序和.NET 框架调用。参见下图:

GDI+的体系结构

本节首先介绍GDI+的几个主要新增的特性及其功能,然后说明它给Windows 图形图像程序的开发模式带来的变化,最后给出一个代码实例,介绍如何在VC++中使用GDI+进行程序开发。 1.GDI+的功能

GDI+主要提供了以下三种功能:

1)二维矢量图形

与MFC中代表GDI的CDC和CGDIObject的诸派生类(CPen、CBrush、CFont等)类似,GDI+的Graphics等类也提供绘制各种二维矢量图形(如直线、折线、矩形、椭圆、多边形等)的功能。而且GDI+还增加了许多新的特性和功能,如无当前状态的绘图模式、含透明成分(α混色)的颜色类Color、图案笔、颜色可渐变的刷、贝塞尔和样条曲线、持久的路径、可伸缩的区域、功能强大的矩阵和变换等等。

与MFC类似,用户也可以使用GDI+提供的Metafile、MetafileHeader和MetaHeader类在图元文件中记录图形和图像的命令序列。

2)图像处理

与MFC类似,GDI+提供了Image、Bitmap和Metafile类,可用于显示、操作和保存位图。它们支持众多的图像文件格式,还可以进行多种图像处理操作。

3)文字显示版式

与MFC类似,GDI+也是使用各种字体、字号和样式来显示文本。GDI +为这种复杂任务提供了大量的支持,包括字体族类FontFamily、字体类Font和字体集类FontCollection及其两个派生类——InstalledFontCollection(已安装字体集)和PrivateFontCollection(专用字体集)等。GDI+中的新功能之一是提供了可增强字体清晰度的ClearType(清晰活字)文字处理技术,利用子像素来消除锯齿,可使文本在LCD 屏幕上呈现时显得比较平滑。

4)功能汇总

GDI+的C++封装包含54个类、12个函数、6类(226个)图像常量、55种枚举和19种结构。GDI+的托管类接口则包含大约60个类、50个枚举和8个结构。这两种封装中的Graphics类都是GDI+的核心功能,它是实际绘制直线、曲线、图形、图像和文本的类。通过这些类和接口可以实现:

●使用笔绘制线条和形状

●使用刷填充形状

●使用图像、位图和图元文件

●α混合线条和填充

●字体和文本

●构造并绘制曲线

●用颜色渐变的梯度刷填充形状

●构造并绘制轨迹

●变换

●图形容器

●区域

●重新着色

读取元数据

等非常丰富强大的功能。

2.GDI+新增特性

1)渐变画刷

渐变画刷(gradient brush梯度刷)通过提供用于填充图形、路径和区域的线性渐变画笔和路径渐变画笔,GDI+扩展了GDI 的功能。渐变画笔还可用于绘制直线、曲线和路径。线性渐变画笔可用于使用颜色来填充图形,画笔在图形中移动时,颜色会逐渐改变。例如,假定通过指定图形左边为蓝色、右边为绿色,创建了一个水平渐变画笔。当用水平渐变画笔填充该图形时,随着画笔从图形的左边移至右边,颜色就会由蓝色逐渐变为绿色。用类似方法定义的垂直渐变画笔填充的图形,颜色从上到下变化。图6-1显示了用水平渐变画笔填充的椭圆和用斜式渐变画笔填充的区域。

图6-1 水平和斜式渐变画笔

用路径渐变画笔填充图形时,可选择不同的方法来指定当从图形的一部分至另一部分移动画笔时颜色的变化方式。一种选择是指定中心颜色和边缘颜色,在从图形中间向外边缘移动画笔时,像素逐渐从一种颜色变化到另一种颜色。图6-2显示了用路径渐变画笔填充的路径(该路径是用一对贝塞尔样条创建的)。

图6-2 路径渐变画笔

2)基数样条函数

GDI+支持在GDI 中不支持的基数样条(cardinal spines)。基数样条是一连串单独的曲线,这些曲线连接起来形成一条较长的光滑曲线。样条由点的数组指定,并通过该数组中的每一个点。基数样条平滑地(没有锐角)通过数组中的每一个点,因此,比通过连接直线创建的路径更光滑精准。图6-3显示了两个路径:一个以基数样条的形式创建;另一个通过连

接直线创建。

图6-3 基数样条路径和折线路径

3)持久路径对象

在GDI 中,路径属于设备上下文,并且会在绘制时被毁坏。利用GDI +,绘图由Graphics 对象执行,可以创建并维护几个与Graphics对象分开的持久的路径对象(persistent path object)——GraphicsPath对象。绘图操作不会破坏GraphicsPath 对象,因此可以多次使用同一个GraphicsPath 对象来绘制路径。

4)变换和矩阵对象

GDI+提供了Matrix(矩阵)对象,它是一种可以使(缩放、旋转和平移等)变换(transformation)简易灵活的强大工具。矩阵对象一般与变换对象联合使用。例如,GraphicsPath 对象具有Transform 方法,此方法接收Matrix 对象作为参数。单一的3×3矩阵可存储一种变换或一个变换序列。图6-4显示了一个路径在执行两种变换前后的情况。

图6-4 路径的变换

5)可伸缩区域

GDI+ 通过对可伸缩区域(Scalable Regions)的支持极大地扩展了GDI。在GDI 中,

区域被存储在设备坐标中,而且,可应用于区域的惟一变换是平移。而GDI+在全局坐标中存储区域,并且允许区域发生任何可存储在变换矩阵中的变换(如缩放和旋转)。图6-5显示一个区域在执行三种变换(缩放、旋转和平移)前后的情况。

图6-5 区域的三种变换(缩放、旋转和平移)

6)α混色

在图6-5中,可以在变换区域(用蓝色阴影画笔填充)中看到未变换区域(用红色填充)。这是由GDI+支持的α混色(Alpha Blending,透明混合)实现的。使用α混色,可以指定填充颜色的透明度。透明色与背景色相混合———填充色越透明,透出的背景色就越多。图6-6显示四个用相同颜色(红色)填充、但透明层次不同的椭圆。

图6-6 不同透明度

7)丰富的图像格式支持

GDI+提供Image、Bitmap 和Metafile 类,可以用不同的格式加载、保存和操作图像。GDI+支持BMP、GIF、JPEG、EXIF、PNG、TIFF、ICON、WMF、EMF共9种常见的图像格式。这些已经被ATL/MFC中的基于GDI+的CImage类所体现。

8)GDI+的不足

虽然,相对于GDI来说,GDI+ 确实增加了许多新特性,而且功能更强大,使用也更方便。但是,这并不等于GDI+ 就能够完全代替GDI。

因为GDI+实际上是GDI的封装和扩展,GDI+的执行效率一般要低于GDI的。另外,GDI+不支持图的位运算,那么就不能进行异或绘图等操作。而且在Visual C++中,GDI+还

不支持双缓存机制(如内存DC和显示DC),这将大大影响GDI+ 在高速图形、图像、动画和视频等方面的应用。

3.编程模式的改变

GDI+的出现,也使基于GDI的编程模式产生了很大变化:GDI+用一个“无状态模式”,取代了GDI中(需要先将各种工具和项目选入DC对象后,才能进行绘图的)“状态模式”。

主要体现在以下几个方面:

1)DC句柄和图形对象

设备上下文(DC = Device Context)是GDI中使用的一种结构,用于存储与特定显示设备的功能、以及指定如何在该设备上绘制项目之属性相关的信息。用于屏幕显示的DC还与特定窗口相关联。为了使用GDI API进行绘图,必须首先获得一个DC的句柄(HDC = Handle to a DC),然后将该句柄作为参数,传递给实际进行绘图的GDI 函数。还可以将此句柄作为参数,传递给获取和设置DC属性的GDI 函数。

使用GDI+,不需要再(直接)使用句柄或设备上下文,而是只需(通过HDC)创建一个Graphics对象,然后用熟悉的面向对象方式来调用其中的各种绘图方法,例如:

myGraphicsObject.DrawLine(&pen, x1, y1, x2, y2);

正如DC是GDI 的核心,Graphics对象也位于GDI+的核心。DC和Graphics对象的作用相似,但在使用设备上下文(GDI)的基于句柄的编程模式和使用Graphics对象(GDI+)的面向对象的编程模型之间,存在一些基本的差异。

Graphics对象(像DC一样)与屏幕上的特定窗口关联,并具有指定如何绘制项目的属性(如SmoothingMode和TextRenderingHint)。但是,Graphics对象不受笔、刷、路径、图像或字体的约束,这与设备上下文不同。例如,使用设备上下文绘制线条之前,必须先调用SelectObject 以使笔对象和DC关联,即将笔选入DC中。在设备上下文中绘制的所有线条均使用该笔,直到选择另一支不同的笔为止。在GDI+中,将Pen 对象作为参数传递给Graphics类的DrawLine 方法。可以在一系列的DrawLine调用的每个调用中,使用不同的Pen对象,而不必将给定的Pen对象与Graphics对象关联。

2)绘制线条的两种方法

下面每个示例都从点(20, 10)到点(200, 100)绘制一条宽为3的红色线条。第一个示例调用GDI,第二个示例则通过托管类接口调用GDI+,这里都使用MFC。也可以不使用MFC,而直接用API来进行GDI+ 绘图(由于篇幅有限,这里就不介绍了)。

(1)用GDI 画线

利用MFC进行GDI绘图,步骤与API的差不多,只是MFC将各种GDI功能封装到了不同的类中。例如,笔的类为CPen、点的类为CPoint、设备上下文的类为CDC。而且所有的绘图函数都被封在CDC类中,所以只能作为其对象的成员函数才能被使用,当然也就不用再带HDC句柄作为输入参数了。

CPen pen(PS_SOLID, 3, RGB(255, 0, 0)); // 创建红色画笔,宽3

pDC->SelectObject(&pen); // 选入DC

pDC->MoveTo(20, 10); // 将当前点移到直线的起点

pDC->LineTo(200, 100); // 画线

(2)用GDI+画线

利用MFC进行GDI+绘图,步骤与API的差不多。只是代码改在OnDraw函数中,而且获取DC句柄的方法不同。

Graphics myGraphics(pDC->m_hDC); // 利用DC句柄创建图形对象

Pen myPen(Color(255, 0 , 0), 3); // 创建一个笔,宽3,红色

myGraphics.DrawLine(&myPen, 20, 10, 200, 100); // 调用图形对象的画线方法

3)作为参数的笔、刷、路径、图像和字体

前面的示例显示:创建和维护Pen对象可以与提供绘制方法的Graphics对象分开。创建和维护Brush、GraphicsPath、Image 和Font 对象也可以与Graphics对象分开,Graphics 类提供的许多绘制方法都将这些对象作为参数接收。

例如,Brush对象作为参数传递至FillRectangle方法,GraphicPath对象作为参数传递至DrawPath方法。同样,Image和Font对象传递至DrawImage和DrawString方法。这与GDI 不同,在GDI中,需要将笔、刷、路径、图像或字体选入DC,然后将DC的句柄作为参数传递至绘制函数或采用CDC类对象的函数来绘图。

4)方法重载

许多GDI+方法都是重载的,即,若干方法共享同一名称,却有不同的参数列表。这一点与用MFC封装后的GDI类似,但是GDI+中的重载方法要更多一些。(注意,在.NET、C#、Java和VB中,都把类的成员函数称为方法。当我们在C++中,使用.NET框架类库中的类和功能时,也常常将其成员函数改称为方法。)例如,画线的重载方法有:Status DrawLine(const Pen* pen, REAL x1, REAL y1, REAL x2, REAL y2);

Status DrawLine(const Pen* pen, const PointF& pt1, const PointF& pt2);

Status DrawLine(const Pen* pen, INT x1, INT y1, INT x2, INT y2);

Status DrawLine(const Pen* pen, const Point& pt1, const Point& pt2);

其中,typedef int INT; class Point {public: INT X; INT Y; ……};

typedef float REAL; class PointF {public: REAL X; REAL Y; ……};

5)无当前位置

前面所述的DrawLine方法中显示:线条的起点和终点均被作为参数接收。这与GDI 方案不同,在GDI中,调用MoveToEx(hdc, x1, y1, NULL)或pDC->MoveTo(x1, y1)来设置当前笔位置之后,再调用LineTo (hdc , x2 , y2)或pDC->LineTo(x2, y2)来绘制一条从(x1, y1) 到(x2 , y2) 的线条。GDI+从总体上已经放弃了当前位置的概念。

6)绘制和填充的不同方法

论及绘制轮廓和填充图形内部时,GDI+要比GDI更灵活。GDI有一个Rectangle函数,可一步完成绘制轮廓和填充矩形内部。轮廓由当前选定的笔绘制,而内部则由当前选定的刷来填充。

GDI+使用不同的方法来绘制轮廓和填充矩形内部。Graphics类的DrawRectangle方法将Pen对象作为其参数之一,而FillRectangle方法将Brush对象作为其参数之一。

7)构造区域

GDI提供几种用于创建区域的函数(在MFC中,它们被封装在CRng类里):CreateRect- Rgn、CreateEllpticRgn、CreateRoundRectRgn、CreatePolygonRgn和CreatePolyPolygonRgn。您或许希望GDI+中的Region类也有类似的构造函数,将矩形、椭圆、圆角矩形和多边形作为参数接收,但事实并非如此。GDI+中的Region类提供一个接收Rectangle对象的构造函数和另一个接收GraphicsPath对象的构造函数。如果想基于椭圆、圆角矩形或多边形构造区域,可以通过创建一个GraphicsPath对象(可包含椭圆的对象等),然后将其传递至Region 构造函数来轻松实现。

GDI+通过组合图形和路径,使得构成复杂区域十分简单。Region类具有Union和Intersect方法,可用于扩展具有路径的现有区域或其它区域。GDI+方案一个很好的功能就是GraphicsPath对象在作为参数传递至Region构造函数时不会被破坏(在GDI 中,可以使用PathToRegion函数将路径转换为区域,但在此过程中,路径将被破坏)。另外,GraphicsPath 对象在作为参数传递给Union或Intersect方法时也不会被破坏,因此,在一些单独的区域中,可以将给定的路径作为构造块使用。例如:

Region region1(rect1);

Region region2(rect2);

region1.Union(onePath);

region2.Intersect(onePath);

4.GDI+的组成

GDI+ API的C++封装包含54个类、12个函数、6类(226个)图像常量、55种枚举和19种结构。

1)类

GDI+ 中共有54个类,核心类是Graphics,它是实际绘制直线、曲线、图形、图像和文本的类。许多其它GDI+类是与Graphics类一起使用的。例如,DrawLine方法接收Pen 对象,该对象中存有所要绘制的线条的属性(颜色、宽度、虚线线型等)。FillRectangle方法可以接收指向LinearGradientBrush对象的指针,该对象与Graphics对象配合工作来用一种渐变色填充矩形。Font和StringFormat对象影响Graphics对象绘制文本的方式。Matrix 对象存储并操作Graphics对象的仿射变换——旋转、缩放和翻转图像。

GDI+还提供了用于组织图形数据的几种结构类(例如Rect、Point和Size)。而且,某些类的主要作用是结构化数据类型。例如,BitmapData类是Bitmap类的帮助器,PathData 类是GraphicsPath类的帮助器。

下面是所有GDI+的API类的列表:

2)函数

3)常量

4)枚举

GDI+定义了55种枚举,它们都是相关常数的集合。例如,LineJoin枚举包含元素Bevel、Miter和Round,它们指定可用于连接两个线条的线型。下面是所有枚举类型的列表:

5)结构

GDI+ API中还定义了19种结构,用于GDI+的各种函数调用中。下面是所有GDI+ API 结构的列表:

6)GDI+平面API

GDI+暴露出(exposes )一个平面(flat )API ,它包含大约600个函数,被实现在Gdiplus.dll 中,声明在Gdiplusflat.h

内。这些函数被包装到了前面讨论过的GDI+ API 的54个C++类的集合之中。不要直接调用这些函数,而推荐用调用类成员方法来替代。因为微软产品支持服务(Microsoft Product Support Services ),不会为直接调用平面API 的代码提供支持。

作为C++封装的替代方案,微软.NET 框架提供了GDI+的一个托管代码封装类集,包含大约60个类、50个枚举和8个结构。它们属于下列命名空间:

System.Drawing

System.Drawing.Drawing2D

System.Drawing.Imaging

System.Drawing.Text

GDI+的封装与使用

这两种包装(C++和托管代码)都采用了面向对象方法,所以二者在将参数传递给封装的方法和将参数传递给平面API 函数的方式上存在差别。

例如,C++的Matrix 类对象中,有一个nativeMatrix 字段(field ),它指向一个GpMatrix 类型的内部变量。当你传递一些参数到一个Matrix 对象的方法时,该方法会将这些参数向下传递到平面API 函数,但是该方法还将nativeMatrix 字段也作为输入参数传递给了平面

API函数。例如:

Status Shear(REAL shearX, REAL shearY, // GDI+ 类Matrix中的方法

MatrixOrder order = MatrixOrderPrepend) {

……

GdipShearMatrix(nativeMatrix, shearX, shearY, order); // GDI+平面API函数

……

}

其中,平面API函数GdipShearMatrix的函数原型为:

GpStatus WINGDIPAPI GdipShearMatrix(GpMatrix *matrix, REAL shearX, REAL shearY, GpMatrixOrder order)

Matrix构造函数传递一个GpMatrix指针变量(输出参数)的地址到平面API函数:GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix **matrix);

该函数创建并初始化一个内部GpMatrix变量,然后将GpMatrix的地址,赋值给指针变量。接着构造函数将该指针的值复制到nativeMatrix字段。如:

Matrix() {

GpMatrix *matrix = NULL;

lastResult = DllExports::GdipCreateMatrix(&matrix);

SetNativeMatrix(matrix);

}

VOID SetNativeMatrix(GpMatrix *nativeMatrix) {

this->nativeMatrix = nativeMatrix;

}

而封装类中的克隆方法Clone,不接受参数,而经常是传递两个参数到底层的GDI+平面API函数。Matrix::Clone传递nativeMatrix(作为输入参数)和GpMatrix指针变量的地址(作为输出参数)给平面API的GdipCloneMatrix函数:

GpStatus WINGDIPAPI GdipCloneMatrix(GpMatrix *matrix, GpMatrix **cloneMatrix); 例如:

Matrix *Clone() const {

GpMatrix *cloneMatrix = NULL;

……

GdipCloneMatrix(nativeMatrix, &cloneMatrix));

……

return new Matrix(cloneMatrix);

}

该平面API函数返回一个GpStatus类型的值。在GdiplusGpStubs.h中,枚举类型GpStatus 被定义为与枚举类型Status等价:

typedef Status GpStatus;

在封装类中,大多数方法都返回一个状态值,指出方法是否成功。但是也有一些方法用布尔变量来返回状态。例如,Matrix类的IsInvertible方法:

BOOL IsInvertible() const {

BOOL result = FALSE;

……

GdipIsMatrixInvertible(nativeMatrix, &result);

return result;

}

其中,平面API函数GdipIsMatrixInvertible的函数原型为:

GpStatus WINGDIPAPI GdipIsMatrixInvertible(GDIPCONST GpMatrix *matrix, BOOL *result);

另一个封装类是Color,它只有一个(被定义为DWORD的)ARGB类型的字段。当你传递一个Color对象到某个封装方法时,该方法也会将ARGB字段传到底层的GDI+平面API函数。例如Pen::SetColor:

Status SetColor(const Color& color) {

……

GdipSetPenColor(nativePen, color.GetValue());

}

Color::GetValue方法返回ARGB字段的值。其中,平面API函数GdipSetPenColor的函数原型为:

GpStatus WINGDIPAPI GdipSetPenColor(GpPen *pen, ARGB argb);

5.2 GDI+的使用

封装了GDI+ API的各种C++类、函数、常量、枚举和结构,都被定义在Gdiplus.h头文件所包含的一系列头文件中。所以,采用MFC进行GDI+编程,必须包含Gdiplus.h头文件。

由上节最后一小小节“4.6)GDI+平面API”中的讨论可知,封装在GDI+类中方法,最后都需要调用GDI+平面API中的相关底层函数,才能完成实际的操作。所以,为了运行GDI+应用程序,在操作系统平台中,必须安装动态链接库Gdiplus.dll。

该动态链接库所对应的静态库文件为GdiPlus.lib,而且它不是C++和MFC的缺省链接库。所以,必须在项目设置,添加该库作为链接器输入的附加依赖项。

因为在Gdiplus.h头文件中,将所有的GDI+的类、函数、常量、枚举和结构等都定义在了命名空间Gdiplus中。所以,一般在GDI+程序中,都必须使用如下的命名空间声明:

using namespace Gdiplus;

例如:

#include

using namespace Gdiplus;

……

1)GDI+开发包

若采用的是Visual C++ 2005/2008,则已经包含了开发GDI+应用程序所需的所有东西。包括:

●动态链接库文件gdiplus.dll

●静态链接库文件gdiplus.lib

●代码中所需要的头文件gdiplus*.h

●帮助文档gdicpp.chm和gdicpp.chi

如果你使用的操作系统是Windows XP或Windows Server 2003,则GDI+所对应的动态链接库,已经被包含在其中。gdiplus.dll一般位于操作系统的WinSxS(Windows Side-by-Side

assembly,视窗并行程序集)目录中,例如:

C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.0.0_x-ww_8d 353f13\gdiplus.dll(1661KB,2002.10.8)

C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.2180_x-ww_522f9f82\gdiplus.dll(1672KB,2004.8.4)

而GDI的动态链接库gdi32.dll,却一般在操作系统的32位系统目录中:

C:\WINDOWS\system32\gdi32.dll(272KB,2004.8.4)

如果开发工具采用Visual C++ 6.0,而且操作系统是Windows 2000,则需要安装GDI+的开发包。如果你已经安装了.NET框架,则其中已经包含了该开发包。如果还没有安装,则需要自己去微软的网站免费下载GDI+ 开发包或.NET框架(可能需要先通过微软的正版操作系统软件验证)。

2)VC中的设置

1.添加链接库——在VS05/08中,选“项目/*属性”菜单项,打开项目的属性页窗口,

先选“所有配置”,再选“配置属性/链接器/输入”项,在右边上部的“附加依赖

项”栏的右边,键入GdiPlus.lib(参见下图)后按“应用”钮,最后按“确定”钮

关闭对话框。

下面是VC05/08中,GDI+头文件和动态链接库文件,缺省所在的目录:

●VC05:

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GdiPlus*.h

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib\GdiPlus.lib

●VC08:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\GdiPlus*.h

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\GdiPlus.lib

2.添加头文件、使用命名空间——在要使用GDI+的文件(如视图类的头文件或代码

文件)头部包含GDI+的头文件:

#include

并加上使用GDI+命名空间的using指令(区分大小写,注意首字母大写):

using namespace Gdiplus;

下面是VC05/08中,GDI头文件和动态链接库文件,缺省所在的目录:

●VC05:

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\WinGDI.h(API)C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\afxwin.h(MFC)

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib\Gdi32.lib

●VC08

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WinGDI.h(API)

C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxwin.h(MFC)

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\Gdi32.lib

3)GDI+的初始化与清除

为了在MFC应用程序中使用采用C++封装的GDI+ API,必须在MFC项目的应用程序类中,调用GDI+命名空间中的GDI+启动函数GdiplusStartup和GDI+关闭函数GdiplusShutdown,来对GDI+进行初始化(装入动态链接库Gdiplus.dll,或锁定标志+1)和清除(卸载动态链接库Gdiplus.dll,或锁定标志-1)工作。它们一般分别在应用程序类的InitInstance和ExitInstance重载成员函数中调用。

函数GdiplusStartup和GdiplusShutdown,都被定义在GdiplusInit.h头文件中:Status WINAPI GdiplusStartup(

OUT ULONG_PTR *token,

const GdiplusStartupInput *input,

OUT GdiplusStartupOutput *output);

void GdiplusShutdown(ULONG_PTR token);

其中:

●类型ULONG_PTR,是用无符号长整数表示的指针,被定义在basetsd.h头文件中:

typedef _W64 unsigned long ULONG_PTR;

输出参数token(权标),供关闭GDI+的函数使用,所以必须设置为应用程序类的

成员变量(或全局变量,不提倡)。

●结构GdiplusStartupInput和GdiplusStartupOutput,也都被定义在GdiplusInit.h头文件

中:

struct GdiplusStartupInput {

UINT32 GdiplusVersion; // Must be 1

DebugEventProc DebugEventCallback; // Ignored on free builds

BOOL SuppressBackgroundThread; // FALSE unless you're prepared to call

// the hook/unhook functions properly BOOL SuppressExternalCodecs; // FALSE unless you want GDI+ only to

// use its internal image codecs.

GdiplusStartupInput(

DebugEventProc debugEventCallback = NULL,

BOOL suppressBackgroundThread = FALSE,

BOOL suppressExternalCodecs = FALSE) {

GdiplusV ersion = 1;

DebugEventCallback = debugEventCallback;

SuppressBackgroundThread = suppressBackgroundThread;

SuppressExternalCodecs = suppressExternalCodecs;

}

};

struct GdiplusStartupOutput {

NotificationHookProc NotificationHook;

NotificationUnhookProc NotificationUnhook;

};

?GDI+启动输入结构指针参数input,一般取缺省构造值即可,即(设:无调

试事件回调过程、不抑制背景线程、不抑制外部编解码):

input = GdiplusStartupInput(NULL, FALSE, FALSE);

?GDI+启动输出结构指针参数output,一般不需要,取为NULL即可。

注意,采用MFC进行GDI+ API编程时,在使用任何GDI+的功能调用之前,必须先调用GDI+启动函数GdiplusStartup来进行初始化GDI+的工作;在完成所有的GDI+功能调用之后,必须调用GDI+关闭函数GdiplusShutdown来进行清除GDI+的工作。

例如:(创建一个名为GdipDraw的MFC单文档应用程序项目,在项目属性中添加GdiPlus.lib库作为链接器输入的附加依赖项)

// GdipDraw.h

……

class CGdipDrawApp : public CWinApp

{

public:

CGdipDrawApp();

ULONG_PTR m_gdiplusToken;

……

};

// GdipDraw.cpp

……

#include

using namespace Gdiplus;

……

BOOL CGdipDrawApp::InitInstance()

{

// 如果一个运行在Windows XP 上的应用程序清单指定要

// 使用ComCtl32.dll 版本6 或更高版本来启用可视化方式,

//则需要InitCommonControlsEx()。否则,将无法创建窗口。

INITCOMMONCONTROLSEX InitCtrls;

InitCtrls.dwSize = sizeof(InitCtrls);

// 将它设置为包括所有要在应用程序中使用的

// 公共控件类。

InitCtrls.dwICC = ICC_WIN95_CLASSES;

InitCommonControlsEx(&InitCtrls);

/*注意:下面这两个语句必须加在CWinApp:: InitInstance ();语句之前,不然以

后会造成视图窗口不能自动重画、程序中不能使用字体等等一系列问题。*/

GdiplusStartupInput gdiplusStartupInput;

GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);

CWinApp::InitInstance();

……

}

……

int CGdipDrawApp::ExitInstance() // 该函数是自己利用属性窗口,添加的重写函数

{

// TODO: 在此添加专用代码和/或调用基类

GdiplusShutdown(m_gdiplusToken);

return CWinApp::ExitInstance();

}

4)逻辑框图

下面是使用MFC进行GDI+ 编程的设置、准备与初始化过程的逻辑框图:

GDI+的设置、准备与初始化

5)编程例子

下面通过一个简单的例子,来说明如何使用GDI+进行应用程序开发。

创建一个名为Gdip的MFC单文档应用程序项目,在项目属性中添加链接库GdiPlus.lib,在应用程序类和视图类的CPP代码文件中,包含头文件并使用命名空间:

#include

电脑主板接口图解说明

电脑主板接口图解说明 一、认识主板供电接口图解安装详细过程 在主板上,我们可以看到一个长方形的插槽,这个插槽就是电源为主板提供供电的插槽(如下图)。目前主板供电的接口主要有24针与20针两种,在中高端的主板上,一般都采用24PIN的主板供电接口设计,低端的产品一般为20PIN。不论采用24PIN和20PIN,其插法都是一样的。 主板上24PIN的供电接口 主板上20PIN的供电接口

电源上为主板供电的24PIN接口 为主板供电的接口采用了防呆式的设计,只有按正确的方法才能够插入。通过仔细观察也会发现在主板供电的接口上的一面有一个凸起的槽,而在电源的供电接口上的一面也采用了卡扣式的设计,这样设计的好处一是为防止用户反插,另一方面也可以使两个接口更加牢固的安装在一起。 二、认识CPU供电接口图解安装详细过程 为了给CPU提供更强更稳定的电压,目前主板上均提供一个给CPU单独供电的接口(有4针、6针和8针三种),如下图:

主板上提供给CPU单独供电的12V四针供电接口

电源上提供给CPU供电的4针、6针与8针的接口 安装的方法也相当的简单,接口与给主板供电的插槽相同,同样使用了防呆式的设计,让我们安装起来得心应手。 三、认识SATA串口图解SATA设备的安装 SATA串口由于具备更高的传输速度渐渐替代PATA并口成为当前的主流,目前大部分的硬盘都采用了串口设计,由于SATA的数据线设计更加合理,给我们的安装提供了更多的方便。接下来认识一下主板上的SATA接口。

以上两幅图片便是主板上提供的SATA接口,也许有些朋友会问,两块主板上的SATA 口“模样”不太相同。大家仔细观察会发现,在下面的那张图中,SATA接口的四周设计了一圈保护层,这样对接口起到了很好的保护作用,在一起大品牌的主板上一般会采用这样的设计。

(完整版)各种接口连线图解

玩转投影机接口连线图解 很多初级用户在看投影机文章或将投影机与其它设备进行连接时,面对众多的接口总是感到茫然。其实只要弄明白它们的用途和连/转接方法,在使用时您会觉得其也并非有登天之难。 投影机接口虽没有高档功放上那么多 但也不少 家用投影机上的常用接口 拉近点就看清楚了 一、常规视频输入端子 做为视频播放设备,投影机上输入端子(端子=接口)的数量远多于输出端子,视频端子的数量也远多于音频端子。 ●标准视频输入(RCA)

RCA是莲花插座的英文简称,RCA输入输出是最常见的音视频输入和输出接口,也被称AV接口(复合视频接口),通常都是成对的,把视频和音频信号“分开发送”,避免了因为音/视频混合干扰而导致的图像质量下降。但由于AV接口传输的仍是一种亮度/色度(Y/C)混合的视频信号,仍需显示设备对其进行亮/色分离和色度解码才能成像,这种先混合再分离的过程必然会造成色彩信号的损失,所以其目前主要被用在入门级音视频设备和应用上。 音频转RCA线 RCA转接延长头

插入示意图 白色的是音频接口和黄色的视频接口,使用时只需要将带莲花头的标准AV线缆与其它输出设备(如放像机、影碟机)上的相应接口连接起来即可。 不要小瞧了RCA,其也有做工不错的高档货 ●S端子

标准S端子 标准S端子连接线

音频复合视频S端子色差常规连接示意图 S端子(S-Video)是应用最普遍的视频接口之一,是一种视频信号专用输出接口。常见的S端子是一个5芯接口,其中两路传输视频亮度信号,两路传输色度信号,一路为公共屏蔽地线,由于省去了图像信号Y与色度信号C的综合、编码、合成以及电视机机内的输入切换、矩阵解码等步骤,可有效防止亮度、色度信号复合输出的相互串扰,提高图像的清晰度。 一般DVD或VCD、TV、PC都具备S端子输出功能,投影机可通过专用的S端子线与这些设备的相应端子连接进行视频输入。 显卡上配置的9针增强S端子,可转接色差

电脑主板接口图解

主板内存插槽、扩展插槽及磁盘接口: DDR2内存插槽 DDR3内存插槽 内存规范也在不断升级,从早期的SDRAM到DDR SDRAM,发展到现在的DDR2与DDR3,每次升级接口都会有所改变,当然这种改变在外型上不容易发现,如上图第一副为DDR2,第二幅为DDR3,在外观上的区别主要是防呆接口的位置,很明显,DDR2与DDR3是不能兼容的,因为根本就插不下。内存槽有不同的颜色区分,如果要组建双通道,您必须使用同样颜色的内存插槽。

目前,DDR3正在逐渐替代DDR2的主流地位,在这新旧接替的时候,有一些主板厂商也推出了Combo主板,兼有DDR2和DDR3插槽。 主板的扩展接口,上图中蓝色的为PCI-E X16接口,目前主流的显卡都使用该接口。白色长槽为传统的PCI接口,也是一个非常经典的接口了,拥有10多年的历史,接如电视卡之类的各种各样的设备。最短的接口为PCI-E X1接口,对于普通用户来说,基于该接口的设备还不多,常见的有外置声卡。

有些主板还会提供迷你PCI-E接口,用于接无线网卡等设备 SATA2与IDE接口

横向设计的IDE接口,只是为了方便理线和插拔 SATA与IDE是存储器接口,也就是传统的硬盘与光驱的接口。现在主流的Intel主板都不提供原生的IDE接口支持,但主板厂商为照顾老用户,通过第三方芯片提供支持。新装机的用户不必考虑IDE设备了,硬盘与光驱都有SATA版本,能提供更高的性能。 SATA3接口 SATA已经成为主流的接口,取代了传统的IDE,目前主流的规范还是SATA 3.0Gb/s,但已有很多高端主板开始提供最新的SATA3接口,速度达到6.0Gb/s。如上图,SATA3接口用白色与SATA2接口区分。 主板其他内部接口介绍:

最全的电脑各种接口接法讲解

https://www.360docs.net/doc/5710817143.html, USB接法 一、概述 因为每个USB接口能够向外设提供+5V500MA的电流,当我们在连接板载USB接口时,一定要严格按照主板的使用说明书进行安装。绝对不能出错,否则将烧毁主板或者外设。相信有不少朋友在连接前置USB插线时也发生过类似的“冒烟事件”,因此到现在我都怕一不小心把自己的U盘在别人的机器上被烧了,所以在使用U盘拷文件时,一直都使用键盘口附近后置的USB接口,因为主板集成的接口安全,不会有电源接反的可能。 今天客户打电话投诉说自己的电脑等了半个多月才修好,可把自己的移动硬盘 往上面一接,屏幕上闪了一下发现新硬件,然后移动硬盘就没有动静了,再把移动硬盘接到办公室的电脑里也不能用了。当时我一听头就嗡的一下,马上派人上门检查,结果当用我自己做的测试线接到后置的USB接口,指示灯亮,但接到前置就根本不亮。拆机一看,果真接反了。后面的事就不用说了...。 由此前置USB数据线接反的严重性大家应该都知道了,但是如何防止类似的情况发生呢,这就需要我们能够准确判别前置USB线的排列顺序,可以正确连接前置USB接线。新机器倒还可以,有使用手册,翻一翻就可以了。但是旧主板呢,拿去修理的机器呢?没有主板手册怎么办?到网上下载主板的使用手册,太浪费时间了,更何况也不一定能够找到该型号主板的接线图。不过,如果我们晓得USB接口的基本布线结构,那问题不是就迎刃而解了吗。 二、USB接口实物图 主机端: 接线图: VCC Data- Data+ GND 实物图: 设备端: 接线图: VCC GND Data-

三、市面上常见的USB接口的布线结构 这两年市面上销售的主板,板载的前置USB接口,使用的都是标准的九针USB接口,第九针是空的,比较容易判断。但是多数品牌电脑使用的都是厂家定制的主板,我们维修的时候根本没有使用说明书;还有像以前的815主板,440BX,440VX主板等,前置USB的接法非常混乱,没有一个统一的标准。当我们维修此类机器时,如何判断其接法呢? 现在,我把市面上的比较常见的主板前置USB接法进行汇总,供大家参考。(说明:■代表有插针,□代表有针位但无插针。) 1、六针双排 这种接口不常用,这种类型的USB插针排列方式见于 精英 P6STP-FL(REV:1.1)主板,用于海尔小超人766主机。其电源正和电源负为两个前置USB接口共用,因此前置的两个USB接口需要6根线与主板连接,布线如下表所示。 ■DATA1+ ■DATA1- ■VCC ■DATA2- ■DATA2+ ■GND 2、八针双排 这种接口最常见,实际上占用了十针的位置,只不过有两个针的位置是空着的,如精英的P4VXMS(REV:1.0)主板等。该主板还提供了标准的九针接法,这种作是为了方便DIY在组装电脑时连接容易。 ■VCC ■DATA- ■DATA+ □NUL ■GND ■GND □NUL ■DATA+ ■DATA- ■VCC 微星 MS-5156

完整word版各种接口针脚定义大全

3.5mm 插头 最常见的立体声耳机分三层,标准分布为“左右地红白”(从端部到根部依次是左声道、右声道、地线,其中左声道常用红色线皮,右声道常用白色的)。 最常见的是银白色的和铜黄色的,银色的是铜镀银,铜黄色的就是铜。由于银的稳定性和电子工程性优于铜,所以铜镀上银后可以升级使用该插头设备的用户体验。 USB接口 USB是一种常用的pc接口,他只有4根线,两根电源两根信号,故信号是串行传输的,usb接口也称为串行口, usb2.0的速度可以达到480Mbps。可以满足各种工业和民用需要.USB接口的输出电压和电流是: +5V 500mA 实际上有误差,最大不能超过+/-0.2V 也就是4.8-5.2V 。usb接口的4根线一般是下面这样分配的,需要注意的是千万不要把正负极弄反了,

否则会烧掉usb设备或者电脑的南桥芯片:黑线:gnd 红线:vcc 绿线:data+ 白线:data- 1 USB接口定义图 USB接口定义颜色 一般的排列方式是:红白绿黑从左到右 定义: 红色-USB电源:标有-VCC、Power、5V、5VSB字样 白色-USB数据线:(负)-DATA-、USBD-、PD-、USBDT- 绿色-USB数据线:(正)-DATA+、USBD+、PD+、USBDT+ 黑色-地线: GND、Ground USB接口的连接线有两种形式,通常我们将其与电脑接口连接的一端称为“A”连接头,而将连接外设的接头称为“B”连接头(通常的外设都是内建USB数据线而仅仅包含与电脑相连的“A”连

接头)。 USB接口是一种越来越流行的接口方式了,因为USB接口的特点很突出:速度快、兼容性好、不占中断、可以串接、支持热插拨等等, 2 所以如今有许多打印机、扫描仪、数字摄像头、数码相机、MP3播放器、MODEM等都开始使用USB做为接口模式,USB接口定义也很简单: 1 +5V 2 DATA-数据- 3 DATA+数据+ 4 GND 地 串口 主板一般都集成两个串口,可Windows却最多可提供8个串口资源供硬件设置使用(编号COM1到COM8),虽然其I/O地址不相同,但是总共只占据两个IRQ(1、3、5、7共享IRQ4,2、4、6、8共享IRQ3),平常我们常用的是COM1~COM4这四个端口。我们经常在使用中遇到这个问题——如果在COM1上安装了串口鼠标或其他外设,就不能在COM3上安装如Modem之类的其它硬件,这就是因为IRQ设置冲突而无法工作。这时玩家们可以将另外的外设安装在COM2或4。 标准的串口能够达到最高115Kbps的数据传输速度,而一些增强型串口如ESP(Enhanced Serial Port,增强型串口) 、Super

各种设备接口知识

VGA输入接口:VGA 接口采用非对称分布的15pin 连接方式,其工作原理:是将显存内以数字格式存储的图像( 帧) 信号在RAMDAC 里经过模拟调制成 模拟高频信号,然后再输出到等离子成像,这样VGA信号在输入端(LED显示屏内) ,就不必像其它视频信号那样还要经过矩阵解码电路的换算。从前面的视频成像原理可知VGA的视频传输过程是最短的,所以VGA 接口拥有许多的优点,如无串扰无电路合成分离损耗等。 DVI输入接口:DVI接口主要用于与具有数字显示输出功能的计算机显卡相连接,显示计算机的RGB信号。DVI(Digital Visual Interface)数字显示接口,是由1998年9月,在Intel开发者论坛上成立的数字显示工作小组(Digital Display Working Group简称DDWG),所制定的数字显示接口标准。 DVI数字端子比标准VGA端子信号要好,数字接口保证了全部内容采用数字格式传输,保证了主机到监视器的传输过程中数据的完整性(无干扰信号引入),可以得到更清晰的图像。 标准视频输入(RCA)接口:也称AV 接口,通常都是成对的白色的音频接口和黄色的视频接口,它通常采用RCA(俗称莲花头)进行连接,使用时只需要将带莲花头的标准AV 线缆与相应接口连接起来即可。AV接口实现了音频和视频的分离传输,这就避免了因为音/视频混合干扰而导致的图像质量下降,但由于AV 接口传输的仍然是一种亮度/色度(Y/C)混合的视频信号,仍然需要显示设备对其进行亮/ 色分离和色度解码才能成像,这种先混合再分离的过程必然会造成色彩信号的损失,色度信号和亮度信号也会有很大的机会相互干扰从而影响最终输出的图像质量。AV还具有一定生命力,但由于它本身Y/C混合这一不可克服的缺点因此无法在一些追求视觉极限的场合中使用。 S视频输入:S-Video具体英文全称叫Separate Video,为了达到更好的视频效果,人们开始探求一种更快捷优秀清晰度更高的视频传输方式,这就是当前如日中天的S-Video(也称二分量视频接口),Separate Video 的意义就是将Video 信号分开传送,也就是在AV接口的基础上将色度信号C 和亮度信号Y进行分离,再分别以不同的通道进行传输,它出现并发展于上世纪90年代后期通常采用标准的4芯(不含音效) 或者扩展的7芯( 含音效)。带S-Video接口的显卡和视频设备( 譬如模拟视频采集/ 编辑卡电视机和准专业级监视器电视卡/电视盒及视 频投影设备等) 当前已经比较普遍,同AV 接口相比由于它不再进行Y/C混合传输因此也就无需再进行亮色分离和解码工作,而且使用各自独立的传输通道在很大程度上避免了视频设备内信号串扰而产生的图像失真,极大地提高了图像的清晰度,但S-Video 仍要将两路色差信号(Cr Cb)混合为一路色度信号C,进行传输然后再在显示设备内解码为Cb 和Cr 进行处理,这样多少仍会带来一定信号损失而产生失真(这种失真很小但在严格的广播级视频设备下进行测试时仍能发现) ,而且由于Cr Cb 的混合导致色度信号的带宽也有一定的限制,所以S -Video 虽然已经比较优秀但离完美还相去甚远,S-Video虽不是最好的,但考虑到目前的市场状况和综合成本等其它因素,它还是应用最普遍的视频接口。

电脑接口大全【图解】

每台电脑,无论台式机还是笔记本,里里外外都有许多接口和插槽,你全都认识吗?也许你已经对USB、PS/2、VGA等常用接口非常熟悉,但是你知道SCART、HDMI,抑或USB接口分为Type A、Type B等类型吗?总之这是一篇主要面对电脑初学者的文章,但那些有经验的用户也许也能从本文学到一些新知识 第一部分外部接口:用于连接各种PC外设 USB USB(Universal Serial Bus 通用串行总线)用于将鼠标、键盘、移动硬盘、数码相机、VoIP电话(Skype)或打印机等外设等连接到PC。理论上单个USB host 控制器可以连接最多127个设备。 3 X1 H8 g) q6 [5 y# `3 W0 L硬件技术、网络技术、病毒安全、休闲娱乐,软

件下载USB目前有两个版本,USB1.1的最高数据传输率为12Mbps,USB2.0则提高到480Mbps。注意:二者的物理接口完全一致,数据传输率上的差别完全由PC 的USB host控制器以及USB设备决定。USB可以通过连接线为设备提供最高5V,500mA的电力。 接口有3种类型:- Type A:一般用于PC - Mini-USB:一般用于数码相机、数码摄像机、测量仪器以及移动硬盘等 左边接头为Type A(连接PC),右为Type B(连接设备) USB Mini USB延长线,一般不应长于5米

请认准接头上的USB标志 USB分离线,每个端口各可以得到5V 500mA的电力。移动硬盘等用电大户可以使用这种线来从第二个USB端口获得额外电源(500+500=1000mA) 你见过吗:USB接口的电池充电器

台式机主板前面板插线图解大全

主板前面板插线图解 整理B86du来源于网络 钥匙开机其实并不神秘 还记不记得你第一次见到装电脑的时候,JS将CPU、内存、显卡等插在主板上,然后从兜里掏出自己的钥匙(或者是随便找颗螺丝)在主板边上轻轻一碰,电脑就运转起来了的情景吗?是不是感到很惊讶!面对一个全新的主板,JS总是不用看任何说明书,就能在1、2分钟之内将主板上密密麻麻的跳线连接好,是不是觉得他是高手?呵呵,看完今天的文章,你将会觉得这并不值得一提,并且只要你稍微记一下,就能完全记住,达到不看说明书搞定主板所有跳线的秘密。 这个叫做真正的跳线 首先我们来更正一个概念性的问题,实际上主板上那一排排需要连线的插针并不叫做“跳线”,因为它们根本达不”到跳线的功能。真正的跳线是两根/三根插针,上面有一个小小的“跳线冒”那种才应该叫做“跳线”,它能起到硬件改变设置、频率等的作用;而与机箱连线的那些插针根本起不到这个作用,所以真正意义上它们应该叫做面板连接插针,不过由于和“跳线”从外观上区别不大,所以我们也就经常管它们叫做“跳线”。 看完本文,连接这一大把的线都会变得非常轻松

叫了,大家也都习惯了,我们也就不追究这些,所以在本文里,我们姑且管面板连接插针叫做跳线吧。 为了更加方便理解,我们先从机箱里的连接线说起。一般来说,机箱里的连接线上都采用了文字来对每组连接线的定义进行了标注,但是怎么识别这些标注,这是我们要解决的第一个问题。实际上,这些线上的标注都是相关英文的缩写,并不难记。下面我们来一个一个的认识(每张图片下方是相关介绍)! 电源开关:POWERSW 英文全称:PowerSwicth 可能用名:POWER、POWERSWITCH、ON/OFF、POWERSETUP、PWR等 功能定义:机箱前面的开机按钮 复位/重启开关:RESETSW 英文全称:ResetSwicth 可能用名:RESET、ResetSwicth、ResetSetup、RST等 功能定义:机箱前面的复位按钮

史上最全面主板接口图解多篇

1.前言 主板作为电脑的主体部分,提供着多种接口与各部件进行连接工作,而随着科技的不断发展,主板上的各种接口与规范也在不断升级、不断更新换代。其中比较典型的就是CPU接口,Intel方面,有奔腾、酷睿2系列的LGA 775,酷睿i7的LGA 1366接口,i5、i3的LGA 1156;AMD方面也从AM2升级到了AM2+以及AM3接口。其他如内存也从DDR升级到最新的DDR3,CPU供电接口也从4PIN 扩展到8PIN等。面对主板上如此多的接口,你都知道它们的用途吗? 如此繁多的接口,你全都认识吗? 在本文中,我们将对主流主板上的各种接口进行介绍,使用户能清楚、明白主板上各种接口的作用。 1、CPU接口 首先是CPU接口部分,目前PC上只有Intel和AMD两个公司生产的CPU,它们采用了不同的接口,而且同品牌CPU也有不同的接口类型。 Intel: Intel的CPU采用的是LGA 775、LGA 1366和LGA 1156这三种接口。除了酷睿i7系列采用的是LGA 1366接口,酷睿i5和i3采用的是LGA 1156,市面上其他型号的CPU都是采用LGA 775接口,可以说LGA 775仍是主流,各种接口都不兼容。在安装CPU时,注意CPU上的一个角上有箭头,把该箭头对着图中黄色圆圈的方向装即可。

Intel的LGA 775接口 Intel LGA 1366和LGA 1156接口 AMD: 2009年2月中,AMD发布了采用Socket AM3接口封装的Phenom II CPU和AM3接口的主板,而AM3接口相比AM2+接口最大的改进是同时提供DDR2和DDR3内存的支持。换句话说,以后推出的AM3接口CPU均兼容现有的AM2+平台,通过刷写最新主板BIOS,即可用在当前主流的AM2+主板(如AMD 770、780G、790GX/FX等)上,而用户也不必担心升级问题。

各种接口标准图解大全

1.DVI接口基础知识 DVI全称为Digital Visual Interface,是1999年由Silicon Image、Intel(英特尔)、Compaq(康柏)、IBM、HP(惠普)、NEC、Fujitsu(富士通)等公司共同组成的数字显示工作组 DDWG(Digital Display Working Group)推出的接口标准,其外观是一个24针的接插件。显示设备采用DVI接口具有主要有以下两大优点: 一、速度快:DVI传输的是数字信号,数字图像信息不需经过任何转换,就会直接被传送到显示设备上,因此减少了数字→模拟→数字繁琐的转换过程,大大节省了时间,因此它的速度更快,有效消除拖影现象,而且使用DVI进行数据传输,信号没有衰减,色彩更纯净,更逼真。 二、画面清晰:计算机内部传输的是二进制的数字信号,使用VGA接口连接液晶显示器的话就需要先把信号通过显卡中的D/A(数字/模拟)转换器转变为R、G、B三原色信号和行、场同步信号,这些信号通过模拟信号线传输到液晶内部还需要相应的A/D(模拟/数字)转换器将模拟信号再一次转变成数字信号才 能在液晶上显示出图像来。在上述的D/A、A/D转换和信号传输过程中不可避免会出现信号的损失和受到干扰,导致图像出现失真甚至显示错误,而DVI接口无需进行这些转换,避免了信号的损失,使图像的清晰度和细节表现力都得到了大大提高。 区分不同DVI标准 DVI接口有多种规格,分为DVI-A、DVI-D和DVI-I,它是以Silicon Image 公司的PanalLink接口技术为基础,基于TMDS(Transition Minimized Differential Signaling,最小化传输差分信号)电子协议作为基本电气连接。TMDS是一种微分信号机制,可以将象素数据编码,并通过串行连接传递。显卡产生的数字信号由发送器按照TMDS协议编码后通过TMDS通道发送给接收器,经过*送给数字显示设备。一个DVI显示系统包括一个传送器和一个接收器。传送器是信号的来源,可以内建在显卡芯片中,也可以以附加芯片的形式出现在显卡PCB上;而接收器则是显示器上的一块电路,它可以接受数字信号,将其*并传递到数字显示电路中,通过这两者,显卡发出的信号成为显示器上的图象。 DVI-D接口

各种接口图片

作为局域网的主要连接设备,以太网交换机成为应用普及最快的网络设备之一,同时,也是随着这种快速的发展,交换机的功能不断增强,随之而来则是交换机端口的更新换代以及各种特殊设备连接端口不断的添加到交换机上,这也使得交换机的接口类型变得非常丰富,为了让大家对这些接口有一个比较清晰的认识,我们根据资料特地整理了一篇交换机接口的文章: 1、RJ-45接口 这种接口就是我们现在最常见的网络设备接口,俗称“水晶头”,专业术语为RJ-45连接器,属于双绞线以太网接口类型。RJ-45插头只能沿固定方向插入,设有一个塑料弹片与RJ-45插槽卡住以防止脱落。 这种接口在10Base-T以太网、100Base-TX以太网、1000Base-TX 以太网中都可以使用,传输介质都是双绞线,不过根据带宽的不同对介质也有不同的要求,特别是1000Base-TX千兆以太网连接时,至少要使用超五类线,要保证稳定高速的话还要使用6类线。

2、SC光纤接口 SC光纤接口在100Base-TX以太网时代就已经得到了应用,因此当时称为100Base-FX(F是光纤单词fiber的缩写),不过当时由于性能并不比双绞线突出但是成本却较高,因此没有得到普及,现在业界大力推广千兆网络,SC光纤接口则重新受到重视。 光纤接口类型很多,SC光纤接口主要用于局网交换环境,在一些高性能千兆交换机和路由器上提供了这种接口,它与RJ-45接口看上去很相似,不过SC接口显得更扁些,其明显区别还是里面的触片,如果是8条细的铜触片,则是RJ-45接口,如果是一根铜柱则是SC 光纤接口。

3、FDDI接口 FDDI是目前成熟的LAN技术中传输速率最高的一种,具有定时令牌协议的特性,支持多种拓扑结构,传输媒体为光纤。 光纤分布式数据接口(FDDI)是由美国国家标准化组织(ANSI)制定的在光缆上发送数字信号的一组协议。FDDI 使用双环令牌,传输速率可以达到 100Mbps。 CCDI 是 FDDI 的一种变型,它采用双绞铜缆为传输介质,数据传输速率通常为 100Mbps。

电脑常见的接口大全

电脑常见的接口大全 每一台计算机,不管是台式机还是笔记本,里里外外都有很多的接口,你能把它们 每一个都认出来而且知道它们的用途吗?通常一些相关的文章介绍起来都缺乏耐 心,而且也没有足够的插图之类,更使得大家犯迷糊。 本文旨在综合参考之用,不仅是帮助新人菜鸟,希望也能够对经验丰富的人有所帮 助。通过大量的图片和简单的解释文字,我们将向您介绍在PC上各种各样的插槽、端口、接口,以及通常是什么样的设备来连接在上面。因此本文对于那些对电脑内 外接口不太清楚的人会更有帮助一些,而不是一篇电脑连接故障的快速参考书。 PC的部件连接性方面比较让人欣慰的是:不兼容的接口配件等根本就不能连接在一起。当然也不排除极少的情形出现,还好因此导致硬件损害的事情现在也是非 常少见了。 USB

USB(Universal Serial Bus)接口大家可能最熟悉了吧,USB是设计用来连接鼠标、键盘、移动硬盘、数码相机、网络电话(VoIP的skype之类)、打印机等外围设备的,理论上一个USB主控口可以最大支持127个设备的连接。USB分为两个标准,USB1.1最大传输速度为12Mbps,USB2.0为480Mbps,这两种标准的接口是完全一样的,也可向下兼容,传输速度的不同取决于电脑主板的USB主控芯片和USB设备的芯片。USB接口可以带有供电线路,这样USB设备例如移动硬盘等就不用再接一条 电源线了(最高500mA 5V电压),现在支持USB接口的手机也可以通过电脑来充电。 USB接口方式有三种:PC上常见的是Type A型,一些USB设备上(一般带有连接线缆)常使用Type B,而Mp3、相机、手机等小型数码设备上通常是mini USB接口。

台式电脑主板接口说明附详细图解

电脑主板接口 1.前言 主板作为电脑的主体部分,提供着多种接口与各部件进行连接工作,而随着科技的不断发展,主板上的各种接口与规范也在不断升级、不断更新换代。其中比较典型的就是CPU接口,Intel方面,有奔腾、酷睿2系列的LGA 775,酷睿i7的LGA 1366接口,i5、i3的LGA 1156;AMD方面也从AM2升级到了AM2+以及AM3接口。其他如内存也从DDR升级到最新的DDR3,CPU供电接口也从4PIN扩展到8PIN等。面对主板上如此多的接口,你都知道它们的用途吗? 如此繁多的接口,你全都认识吗? 在本文中,我们将对主流主板上的各种接口进行介绍,使用户能清楚、明白主板上各种接口的作用。 1、CPU接口 首先是CPU接口部分,目前PC上只有Intel和AMD两个公司生产的CPU,它们采用了不同的接口,而且同品牌CPU 也有不同的接口类型。 Intel:

Intel的LGA 775接口

IntelLGA 1366和LGA 1156接口 Intel的CPU采用的是LGA 775、LGA 1366和LGA 1156这三种接口。除了酷睿i7系列采用的是LGA 1366接口,酷睿i5和i3采用的是LGA 1156,市面上其他型号的CPU都是采用LGA 775接口,可以说LGA 775仍是主流,各种接口都不兼容。在安装CPU时,注意CPU上的一个角上有箭头,把该箭头对着图中黄色圆圈的方向装即可。 AMD: 2009年2月中,AMD发布了采用Socket AM3接口封装的Phenom II CPU和AM3接口的主板,而AM3接口相比AM2+接口最大的改进是同时提供DDR2和DDR3内存的支持。换句话说,以后推出的AM3接口CPU均兼容现有的AM2+平台,通过刷写最新主板BIOS,即可用在当前主流的AM2+主板(如AMD 770、780G、790GX/FX等)上,而用户也不必担心升级问题。

计算机常见外部接口图解

计算机常见外部接口图解 插头 USB接口 串口 VGA接口 网卡(LAN)接口 并口 电脑内数据接口 IEEE1394接口 eSATA接口 Micro-USB DVI HDMI

3.5mm插头 最常见的立体声耳机分三层,也有两层的,每一层都有对应的功能,要DIY的话一定要分层。标准分布为“左右地红白”(从端部到根部依次是左声道、右声道、地线,其中左声道常用红色线皮,右声道常用白色的)。 最常见的是银白色的和铜黄色的,银色的是铜镀银,铜黄色的就是铜。由于银的稳定性和电子工程性优于铜,所以铜镀上银后可以升级使用该插头设备的用户体验。 USB接口 USB是一种常用的pc接口,他只有4根线,两根电源两根信号,故信号是串行传输的,usb接口也称为串行口,的速度可以达到480Mbps。可以满足各种工业和民用需要.USB接口的输出电压和电流是: +5V 500mA 实际上有误差,最大不能超过+/ 也就是。usb接口的4根线一般是下面这样分配的,需要注意的是千万不要把正负极弄反了,否则会烧掉usb设备或者电脑的南桥芯片:黑线:gnd 红线:vcc 绿线:data+ 白线:data-

USB接口定义颜色 一般的排列方式是:红白绿黑从左到右 定义: 红色-USB电源:标有-VCC、Power、5V、5VSB字样 白色-USB数据线:(负)-DATA-、USBD-、PD-、USBDT- 绿色-USB数据线:(正)-DATA+、USBD+、PD+、USBDT+ 黑色-地线: GND、Ground USB接口的连接线有两种形式,通常我们将其与电脑接口连接的一端称为“A”连接头,而将连接外设的接头称为“B”连接头(通常的外设都是内建USB数据线而仅仅包含与电脑相连的“A”连接头)。 USB接口是一种越来越流行的接口方式了,因为USB接口的特点很突出:速度快、兼容性好、不占中断、可以串接、支持热插拨等等,所以如今有许多打印机、扫描仪、数字摄像头、数码相机、MP3播放器、MODEM等都开始使用USB做为接口模式,USB接口定义也很简单: 1 +5V 2 DATA-数据- 3 DATA+数据+ 4 GND 地

第5章 GDI+图形设备接口加

第5章 GDI+ GDI+(Graphics Device Interface Plus 图形设备接口加)是Windows XP 和Windows Server 2003操作系统的图形子系统,也是.NET 框架的重要组成部分和窗体绘图的主要工具,负责在屏幕和打印机上绘制图形图像和显示信息。 顾名思义,GDI+是Windows 早期版本所提供的图形设备接口GDI 的后续版本。GDI+是一种应用程序编程接口(API),分别通过一套C++类和一套部署为托管代码的类来展现,这两套类分别被称为GDI+的“C++封装”和“托管类接口”。 GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows 图形图像程序开发的主要工具。 本章将介绍GDI+的特点和新增功能,以及GDI+ API 的具体使用方法,包括二维矢量图形的绘制、图像处理的应用、以及文字的显示等。 由于本章内容较多,有些章节不作为基本要求,用*号表示的章节是可选的。 5.1 概述 GDI+与GDI 一样,都具有设备无关性。而且GDI+是建立在GDI 之上的一种高层接口,供Windows 应用程序和.NET 框架调用。参见下图: GDI+的体系结构 本节首先介绍GDI+的几个主要新增的特性及其功能,然后说明它给Windows 图形图像程序的开发模式带来的变化,最后给出一个代码实例,介绍如何在VC++中使用GDI+进行程序开发。 1.GDI+的功能 GDI+主要提供了以下三种功能:

1)二维矢量图形 与MFC中代表GDI的CDC和CGDIObject的诸派生类(CPen、CBrush、CFont等)类似,GDI+的Graphics等类也提供绘制各种二维矢量图形(如直线、折线、矩形、椭圆、多边形等)的功能。而且GDI+还增加了许多新的特性和功能,如无当前状态的绘图模式、含透明成分(α混色)的颜色类Color、图案笔、颜色可渐变的刷、贝塞尔和样条曲线、持久的路径、可伸缩的区域、功能强大的矩阵和变换等等。 与MFC类似,用户也可以使用GDI+提供的Metafile、MetafileHeader和MetaHeader类在图元文件中记录图形和图像的命令序列。 2)图像处理 与MFC类似,GDI+提供了Image、Bitmap和Metafile类,可用于显示、操作和保存位图。它们支持众多的图像文件格式,还可以进行多种图像处理操作。 3)文字显示版式 与MFC类似,GDI+也是使用各种字体、字号和样式来显示文本。GDI +为这种复杂任务提供了大量的支持,包括字体族类FontFamily、字体类Font和字体集类FontCollection及其两个派生类——InstalledFontCollection(已安装字体集)和PrivateFontCollection(专用字体集)等。GDI+中的新功能之一是提供了可增强字体清晰度的ClearType(清晰活字)文字处理技术,利用子像素来消除锯齿,可使文本在LCD 屏幕上呈现时显得比较平滑。 4)功能汇总 GDI+的C++封装包含54个类、12个函数、6类(226个)图像常量、55种枚举和19种结构。GDI+的托管类接口则包含大约60个类、50个枚举和8个结构。这两种封装中的Graphics类都是GDI+的核心功能,它是实际绘制直线、曲线、图形、图像和文本的类。通过这些类和接口可以实现: ●使用笔绘制线条和形状 ●使用刷填充形状 ●使用图像、位图和图元文件 ●α混合线条和填充 ●字体和文本 ●构造并绘制曲线 ●用颜色渐变的梯度刷填充形状 ●构造并绘制轨迹 ●变换 ●图形容器 ●区域 ●重新着色

电脑接口大全【图解】

左边是带颜色标示的PS/2接口,右边的没有颜色标示 PS/2是一种古老的接口,广泛用于键盘和鼠标的连接。现在的PS/2接口一般都带有颜色标示,紫色用于连接键盘,绿色用于连接鼠标。 有些主板上的PS/2接口可能没有颜色标示,别担心,插错接口并不会损坏设备,但此时鼠标键盘将无法工作,电脑也可能无法启动,很简单,将鼠标键盘对调一下接口肯定就对了。 前面提到的USB - PS/2转接器 VGA显示接口 显卡上的VGA显示接口 显示器使用一种15针Mini-D-Sub(又称HD15)接口通过标准模拟界面连接到PC上。通过合适的转接器,你也可以将一台模拟显示器连接到DVI-I界面上。VGA接口传输红、绿、蓝色值信号(RGB)以及水平同步(H-Sync)和垂直同步(V-Sync)信号。 显示信号线上的VGA接头电脑 新款显卡一般都提供2个DVI接口,可使用一种DVI-VGA转接器来在两种接口之间转换。

术语表:VGA = Video Graphics Array 视频图像阵列 DVI显示接口 DVI是一种主要针对数字信号的显示界面,这种界面无需将显卡产生的数字信号转换成有损模拟信号,然后再在数字显示设备上进行相反的操作。数字TDMS信号的优点还包括允许显示设备负责图像定位以及信号同步工作。 一块具备两个DVI端口的显卡,可同时连接两个(数字)显示器 因为数字显示取代模拟显示的进程还比较缓慢,目前这两种技术还处于并存阶段,现在的显卡通常可以支持双显示器。广泛使用的DVI-I接口可以同时支持模拟和现实信号。而少见的多的DVI-D接口只能输出数字信号,无法输出任何模拟信号。许多显卡以及部分显示器都提供了DVI-I - VGA转接器,这样那些只提供15针D-Sub-VGA接头的老显示器也可以在DVI-I接口上继续工作。 DVI接口类型及其阵脚分布(显卡上最经常使用的是DVI-I) 术语表:DVI = Digital Visual Interface 数字视觉接口硬 RJ45,用于LAN和ISDN: 有线网络主要使用我们都很熟悉的双绞线进行互连。现在,千兆以太网正在逐步

主板插线接口大全

主板插线接口大全 - 装机必看 2007-11-04 09:57 主板插线接口大全 - 装机必看 前段时间好多同学跟我反映说装机已经基本可以了 但是插个种线很困难所以小鱼就搜集了一些这方面的资料 让大家参考一下 很多朋友对各种接口和线缆的连接方法还不是很清楚,那么这里同样以Intel 平台为例,借助两块不同品牌的主板,对各种接口及其连接方法进行一下详细的介绍。 一、认识主板供电接口图解安装详细过程 在主板上,我们可以看到一个长方形的插槽,这个插槽就是电源为主板提供供电的插槽(如下图)。目前主板供电的接口主要有24针与 20针两种,在中高端的主板上,一般都采用24PIN的主板供电接口设计,低端的产品一般为 20PIN。不论采用24PIN和20PIN,其插法都是一样的。

主板上24PIN的供电接口 主板上20PIN的供电接口

电源上为主板供电的24PIN接口 为主板供电的接口采用了防呆式的设计,只有按正确的方法才能够插入。通过仔细观察也会发现在主板供电的接口上的一面有一个凸起的槽,而在电源的供电接口上的一面也采用了卡扣式的设计,这样设计的好处一是为防止用户反插,另一方面也可以使两个接口更加牢固的安装在一起。 二、认识CPU供电接口图解安装详细过程 为了给CPU提供更强更稳定的电压,目前主板上均提供一个给CPU单独供电

的接口(有4针、6针和8针三种),如下图: 主板上提供给CPU单独供电的12V四针供电接口

电源上提供给CPU供电的4针、6针与8针的接口 安装的方法也相当的简单,接口与给主板供电的插槽相同,同样使用了防呆式的设计,让我们安装起来得心应手。 三、认识SATA串口图解SATA设备的安装 SATA串口由于具备更高的传输速度渐渐替代PATA并口成为当前的主流,目前大部分的硬盘都采用了串口设计,由于SATA的数据线设计更加合理,给我们

各种接口图

不再无从下手,玩转投影机接口连线图解 2007-04-17 14:25 很多初级用户在看投影机文章或将投影机与其它设备进行连接时,面对众多的接口总是感到茫然。其实只要弄明白它们的用途和连/转接方法,在使用时您会觉得其也并非有登天之难。 投影机接口虽没有高档功放上那么多 但也不少 家用投影机上的常用接口

拉近点就看清楚了 一、常规视频输入端子 做为视频播放设备,投影机上输入端子(端子=接口)的数量远多于输出端子,视频端子的数量也远多于音频端子。 ●标准视频输入(RCA) RCA是莲花插座的英文简称,RCA输入输出是最常见的音视频输入和输出接口,也被称AV接口(复合视频接口),通常都是成对的,把视频和音频信号“分开发送”,避免了因为音/视频混合干扰而导致的图像质量下降。但由于AV接口传输的仍是一种亮度/色度(Y/C)混合的视频信号,仍需显示设备对其进行亮/色分离和色度解码才能成像,这种先混合再分离的过程必然会造成色彩信号的损失,所以其目前主要被用在入门级音视频设备和应用上。

音频转RCA线

RCA转接延长头 插入示意图 白色的是音频接口和黄色的视频接口,使用时只需要将带莲花头的标准AV线缆与其它输出设备(如放像机、影碟机)上的相应接口连接起来即可。

不要小瞧了RCA,其也有做工不错的高档货 ●S端子 标准S端子

标准S端子连接线 音频复合视频S端子色差常规连接示意图 S端子(S-Video)是应用最普遍的视频接口之一,是一种视频信号专用输出接口。常见的S端子是一个5芯接口,其中两路传输视频亮度信号,两路传输色度信号,一路为公共屏蔽地线,由于省去了图像信号Y与色度信号C的综合、编码、合成以及电视机机内的输入切换、矩阵解码等步骤,可有效防止亮度、色度信号复合输出的相互串扰,提高图像的清晰度。 一般DVD或VCD、TV、PC都具备S端子输出功能,投影机可通过专用的S端子线与这些设备的相应端子连接进行视频输入。

最新各种接口针脚定义大全

各种接口针脚定义大 全

3.5mm插头 最常见的立体声耳机分三层,标准分布为“左右地红白”(从端部到根部依次是左声道、右声道、地线,其中左声道常用红色线皮,右声道常用白色的)。 最常见的是银白色的和铜黄色的,银色的是铜镀银,铜黄色的就是铜。由于银的稳定性和电子工程性优于铜,所以铜镀上银后可以升级使用该插头设备的用户体验。 USB接口 USB是一种常用的pc接口,他只有4根线,两根电源两根信号,故信号是串行传输的,usb接口也称为串行口,usb2.0的速度可以达到480Mbps。可以满足各种工业和民用需要.USB接口的输出电压和电流是: +5V 500mA 实际上有误差,最大不能超过+/-0.2V 也就是4.8-5.2V 。usb接口的4根线一般是下面这样分配的,需要注意的是千万不要把正负极弄反了,否则会烧掉usb设备或者电脑的南桥芯片:黑线:gnd 红线:vcc 绿线:data+ 白线:data-

USB接口定义图 USB接口定义颜色 一般的排列方式是:红白绿黑从左到右 定义: 红色-USB电源:标有-VCC、Power、5V、5VSB字样 白色-USB数据线:(负)-DATA-、USBD-、PD-、USBDT- 绿色-USB数据线:(正)-DATA+、USBD+、PD+、USBDT+ 黑色-地线: GND、Ground USB接口的连接线有两种形式,通常我们将其与电脑接口连接的一端称为“A”连接头,而将连接外设的接头称为“B”连接头(通常的外设都是内建USB数据线而仅仅包含与电脑相连的“A”连接头)。

USB接口是一种越来越流行的接口方式了,因为USB接口的特点很突出:速度快、兼容性好、不占中断、可以串接、支持热插拨等等,所以如今有许多打印机、扫描仪、数字摄像头、数码相机、MP3播放器、MODEM等都开始使用USB做为接口模式,USB接口定义也很简单: 1 +5V 2 DATA-数据- 3 DATA+数据+ 4 GND 地 串口 主板一般都集成两个串口,可Windows却最多可提供8个串口资源供硬件设置使用(编号COM1到COM8),虽然其I/O地址不相同,但是总共只占据两个IRQ(1、3、5、7共享IRQ4,2、4、6、8共享IRQ3),平常我们常用的是COM1~COM4这四个端口。我们经常在使用中遇到这个问题——如果在COM1上安装了串口鼠标或其他外设,就不能在COM3上安装如Modem之类的其它硬件,这就是因为IRQ设置冲突而无法工作。这时玩家们可以将另外的外设安装在COM2或4。 标准的串口能够达到最高115Kbps的数据传输速度,而一些增强型串口如ESP(Enhanced Serial Port,增强型串口) 、Super

相关文档
最新文档