gdi c#,c语言gdi,C#图形编程GDI+基础介绍

gdi c#,c语言gdi,C#图形编程GDI+基础介绍

本文介绍了C#中的图形编程GDI,对大家的学习或工作有一定的参考价值。让我们和边肖一起学习。

编写图形程序时,需要使用GDI(GraphicsDeviceInterface)。从编程的角度来说,GDI包括两部分:一是GDI对象,二是GDI函数。GDI对象定义了GDI函数使用的工具和环境变量,GDI函数使用GDI对象绘制各种图形。在C#中,图形编程时使用GDI(图形界面加图形设备接口)的版本。GDI是GDI的进一步扩展,这使得我们的编程更加方便。

GDI+概述

GDI是继Windows2000之后,微软在操作系统中提供的一种新的图形设备接口。它通过一组部署为托管代码的类来表现,这些类被称为GDI的“托管类接口”。GDI主要提供以下三种类型的服务:

(1)二维矢量图形:GDI提供了存储图元自身信息的类(或结构),存储图元绘制模式信息的类,以及实际绘制的类。

(2)图像处理:大部分图片很难被定义为一组直线和曲线,无法用二维矢量图形进行处理。所以GDI为我们提供了位图、图像等类,可以用来显示、操作、保存BMP、JPG、GIF等图像格式。

(3)文本显示:GDI支持使用各种字体、字号和样式来显示文本。

编程图形,首先要讲解图形类,同时要掌握钢笔、画笔、矩形。相对于GDI有两个优点:第一,GDI通过提供新的功能(例如渐变画笔和alpha混合)扩展了GDI的功能;其次,修改了编程模型,使图形编程更容易、更灵活。

Graphics类

Graphics类封装了一个GDI绘图图面,并提供了一种将对象绘制到显示设备的方法。图形与特定的设备上下文相关联。绘图方法都包含在Graphics类中。当绘制任何对象(例如,圆、矩形)时,我们必须首先创建一个Graphics类的实例。这个实例相当于构建一个画布,用它我们可以用各种画图方法来画。

程序的设计过程一般分为两步:

(1)创建图形对象;(2)使用图形对象绘制、显示文本或处理图像。

我们通常使用以下三种方法来创建图形对象。

方法一、利用控件或窗体的Paint事件中的PainEventArgs在窗体或控件的Paint事件中接收对图形对象的引用,作为PaintEventArgs (PaintEventArgs指定绘制控件所用的Graphics)的一部分,在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。

例如:

//窗体的Paint事件的响应方法

privatevidform 1 _ Paint(object sender,PaintEventArgse)

{

Graphicsg=e . Graphics

}

还可以直接重载控件或窗体的OnPaint方法。具体代码如下:

protectedoverridevoidOnPaint(PaintEventArgse)

{

Graphicsg=e . Graphics

}

重绘控件时发生Paint事件。

方法二、调用某控件或窗体的CreateGraphics方法

调用控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示控件或窗体的绘图图面。如果要在现有窗体或控件上绘图,通常使用此方法。

例如:

Graphicsg=this。create graphics();

方法三、调用Graphics类的FromImage静态方法

从Image继承的任何对象创建一个Graphics对象。这种方法通常在需要更改现有图像时使用。

例如:

//名为“g1.jpg”的图片位于当前路径中

Imageimg=图像。from file(' G1 . jpg ');//创建一个图像对象

Graphicsg=图形。from image(img);//创建一个图形对象

Graphics类的方法成员

当你有了一个图形的对象引用后,你可以使用这个对象的成员来绘制各种图形。表1列出了Graphics类的公共方法成员。

名称绘制弧

画一个弧线。DrawBezier绘制三维贝尔瑟曲线。DrawBeziers绘制连续的三维Belser曲线。DrawClosedCurve绘制闭合曲线。绘制曲线。画椭圆画椭圆。绘制图像。绘制线绘制线。DrawPath通过路径绘制直线和曲线。DrawPie绘制一个饼形。DrawPolygon绘制多边形。画一个矩形。拉绳绘制文本。填充椭圆。FillPath填充路径。FillPie填充饼图。FillPolygon填充多边形。FillRectangle填充矩形。FillRectangles填充矩形组。FillRegion填充该区域。

英寸NET中,GDI的所有绘图功能都包含在System、System等命名空间中。绘图,系统。绘图。成像,系统。绘图。Darwing2D和系统。所以在开始使用GDI类之前,您需要引用相应的名称空间。

2引用命名空间

C#应用程序中的using命令已经使用了给定的命名空间或类。下面是一个引用命名空间的C#应用程序示例:

使用系统;

使用系统。集合。泛型;

使用系统。数据;

使用系统。组件模型;

使用系统。绘图;

使用系统。Drawing . Drawing2D

使用系统。绘图。成像;

常用画图对象

创建图形对象后,您可以使用它开始绘图、画线、填充图形和显示。

正文等。其中,使用的对象主要有:颜色:用于填充图案、颜色或位图。

钢笔:用于绘制线条和多边形,包括矩形、圆形和饼形。

字体:用于设置文本的字体格式。

画笔:用来描述颜色。

矩形:矩形结构通常用于在表单上绘制矩形。

点:描述一对有序的x和y坐标值。

1Pen类

钢笔用于绘制具有指定宽度和样式的直线。使用DashStyle属性绘制几条虚线。可以使用各种填充样式(包括纯色和纹理)来填充钢笔绘制的直线。填充模式取决于用作填充对象的笔刷或纹理。

使用画笔时,需要先实例化一个画笔对象。主要有以下几种方法。

使用指定的颜色实例化画笔,如下所示:

publicPen(彩色);

用指定的笔刷实例化一个笔刷,如下所示:

publicPen(画笔);

使用指定的笔刷和宽度实例化笔刷,如下所示:

publicPen(笔刷、浮动);

用指定的颜色和宽度实例化一个笔刷,如下所示:

publicPen(颜色,浮动);

实例化画笔的语句格式如下:

Penpn=newPen(Color。蓝色);

或者

Penpn=newPen(Color。蓝色,100);

钢笔的常用属性如下,如下表所示:

获取或设置画笔的对齐方式。获取或设置画笔的属性。获取或设置画笔的颜色。获取或设置画笔的宽度。

2.Color类

自然界中,颜色大多是由透明度(A)和三原色(R、G、B)组成的。在GDI中,颜色的定义是由颜色结构封装的。在颜色结构中,除了(A,R,G,B)之外,还提供了很多系统定义的颜色,比如粉色。此外,还为操作颜色提供了许多静态成员。颜色结构的基本属性如下表所示:

描述A获取这个颜色结构的alpha分量值,值为(0 ~ 255)。

r获取这个颜色结构的红色分量值,取值(0 ~ 255)。g获取这个颜色结构的绿色分量值,值为(0 ~ 255)。b获取这个颜色结构的蓝色分量值,值为(0 ~ 255)。Name获取此颜色结构的名称,它将返回用户定义的颜色或已知颜色的名称(如果该颜色是根据某个名称创建的),以及自定义颜色的RGB值。

下表显示了Color类的基本(静态)方法:

描述名称FromArgb从四个8位Argb分量值(阿尔法、红色、绿色和蓝色)创建一个颜色对象。从指定的预定义颜色创建一个颜色对象。FromName根据预定义颜色的指定名称创建颜色对象。

颜色类的对象可以由现有颜色构造,也可以由RGB创建,例如:

Colorclr1=颜色。FromArgb(122,25,255);

Colorclr2=颜色。FromKnowColor(KnowColor。棕色);//KnownColor是枚举类型。

Colorclr3=颜色。from name(' slate blue ');

在图像处理中,通常需要获取或设置像素的颜色值。获取图像像素颜色值的具体步骤如下:

(1)定义位图

BitmapmyBitmap=new bitmap(' c:\ \ my images \ \ testimage . BMP ');

(2)定义一个颜色变量,并将在指定位置获得的像素值存储在颜色变量中。

colorc=new color();

c=myBitmap。GetPixel(10,10);//获取该位图中指定像素的颜色。

(3)将颜色值分解成单色分量值

intr,g,b;

r=c . R

G=重心;

b=c . B

3.Font类

Font类定义了特定的文本格式,包括字体、字体大小和字形属性。Font类的常用构造函数是publicFont(string Font name,float font size,FontStyle),其中字号和字体可选,publicFont(string font name,float font size),其中“Font name”是FontFamily的字符串表示。以下是定义字体对象的示例代码:

font familyfontfamily=new font family(' Arial ');

Fontfont=newFont(fontFamily,16,FontStyle。常规,图形单位。像素);

下表显示了常见的字体属性:

说明粗体这个名字是否为粗体。字体字体成员。高度字体高度。斜体就是斜体。名称字体名称。字号字号。以磅为单位获取字体对象的字体大小。

Strikeout是否有删除线。样式字体类型。下划线是否加下划线。字体大小单位。

4.Brush类

Brush类是抽象基类,所以不能实例化。我们总是用它的派生类来实例化一个brush对象,当我们填充图形的内部时,我们将使用brush。

5.Rectangle类

存储一组四个整数,表示矩形的位置和大小。矩形结构通常用于在窗体上绘制矩形。除了使用其构造函数构造矩形对象之外,还可以使用rectangle结构的属性成员,其属性成员如下表所示:

解释底部底部坐标高度矩形高度IsEmpty测试矩形宽度和高度是否为0。

左矩形左坐标位置矩形的位置

右矩形右坐标

大小矩形大小

矩形宽度矩形宽度x顶点x矩形左上角的坐标

矩形左上角顶点的y坐标

Retangle结构有两个构造函数:

1.用指定的位置和大小初始化Rectangle类的新实例。

publicRetangle(点,大小);//Size结构存储一个有序的整数对,通常是矩形的宽度和高度。

2.用矩形的四个点的坐标初始化Rectangle类的新实例。

publicRectangle(int,int,int,int);

6.Point类

用指定的坐标初始化Point类的新实例。这个结构很像c中的Point结构,描述的是一对有序的x和y坐标值,其构造函数为:public point (intx,inty);其中x是点的水平位置;y是水在这一点的垂直位置。

以下是用于构造Point对象的示例代码:

Pointpt1=newPoint(30,30);

Pointpt2=newPoint(110,100);

关于C#图形编程GDI的这篇文章到此为止。希望对大家的学习有帮助,也希望大家多多支持。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: