vb.net GDI+入门——画笔、画刷和颜色
GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。顾名思义,GDI+就是GDI得增强版本,在.net构架中,我们可以通过GDI+来实现图形图像的编程。 在绘画的时候,画家需要使用画笔或者画刷来把不同的颜色涂抹到画布上,而我们在对图形图像进行编程的时候,也是通过画笔和画刷把不同的颜色输出到屏幕上。 画笔是 Pen 类的实例,用于绘制线条和空心形状;画刷是从 MustInherit(抽象)Brush 类派生的任何类的实例,可用于填充形状或绘制文本;Color(颜色) 对象是表示特定颜色的类的实例,画笔和画刷可使用这些对象来指示所呈现图形的颜色。 一、颜色 在图像绘制中,最重要的就是颜色,.NET Framework 的 Color 结构用于表示不同的颜色。 1、系统定义的颜色 我们可以通过 Color 结构访问vb.net中枚举的若干系统定义的颜色,例如我们可以通过如下方式获取系统颜色 Dim myColor as Color myColor = Color.Red myColor = Color.Aquamarine myColor = Color.LightGoldenrodYellow myColor = Color.PapayaWhip myColor = Color.Tomato 2、用户定义的颜色 我们除了可以访问系统定义好的颜色外,还可以使用 Color.FromArgb 方法来实现用户定义的颜色,使用 Color.FromArgb 方法时,我们按顺序指定颜色中红色、蓝色和绿色各部分的强度,如下所示: Dim myColor as Color myColor = Color.FromArgb(20,58,77) 色值中的每个数字均必须是从0到255之间的一个整数,其中0表示没有该颜色,而255则为所指定颜色的完整饱和度;因此,Color.FromArgb(0,0) 为黑色,而 Color.FromArgb(255,255,255) 为白色。 3、Alpha 混合处理(透明度) Color.FromArgb 方法除了可以指定RGB(红、绿、蓝)三色,还有一个Alpha参数,Alpha 表示所呈现图形后面的对象的透明度,对于各种底纹和透明度效果很有用。 在 Color.FromArgb 方法中四个参数的第一个参数即是Alpha参数,取值范围是从 0 到 255 之间的任一整数。如下两例: Dim myColor as Color myColor = Color.FromArgb(127,20,77) 创建自定义颜色,且大致为 50% 透明度。 Dim myColor as Color myColor = Color.FromArgb(128,Color.Tomato) 创建系统定义的颜色 Tomato 的颜色,且约为 50% 透明度。 二、画笔 我们使用画笔来绘制线条、曲线以及勾勒形状轮廓。它是 Pen 类的实例,下面的示例说明如何创建一支红色的笔: Dim myPen as New Pen(Color.Red) 一个实例化后的画笔就具有了宽度、样式、颜色三种属性,我们可以在创建画笔之后对它的这三种属性进行调整: 宽度(Width):使用该画笔时所绘线条的宽度,默认的画笔宽度是一个像素单位; 样式(DashStyle):画笔绘制图形时的线型,包括实线、虚线、点线以及由点线与虚线组成的点划线、双点划线等多种样式; 颜色(Color):画笔绘制的线条的颜色,一般情况下我们是在创建画笔的时候就指定了画笔的颜色,但是也可以通过画笔的Color属性来改变。 下面示例演示如何创建并调整一个画笔的属性,然后绘制一条点划线。 首先在窗体上放置一个PictureBox 控件,一个按钮,把以下代码放到按钮的Click事件中: Dim g As Graphics = Me.PictureBox1.CreateGraphics Dim myColor As Color myColor = Color.FromArgb(128,Color.Tomato) Dim mPen As New Pen(myColor) mPen.Color = Color.Red mPen.Width = 3 mPen.DashCap = DashCap.Triangle '指定划线的样式为点划线 mPen.DashStyle = DashStyle.DashDot g.DrawLine(mPen,100,100) 运行后,单击按钮,我们可以看到如下的效果: 三、画刷 画刷用于与 Graphics 对象一起创建实心形状和呈现文本的对象,有几种不同类型的画刷,如下所示:
1、使用纯色画刷 纯色画刷SolidBrush是指使用单一的颜色作为画刷的颜色,下面的示例说明如何在窗体上绘制一个纯红色的椭圆: Dim g as Graphics = Me.CreateGraphics Dim myBrush as New SolidBrush(Color.Red) g.FillEllipse(myBrush,New RectangleF(0,150)) 运行效果如下图所示: 2、简单图案 HatchBrush 使您可以从大量预设的图案中选择绘制时要使用的图案,而不是纯色。下面的示例说明如何创建一个 HatchBrush,它使用方格呢图案进行绘制,并使用红色作为前景色,蓝色作为背景色。 Dim g As Graphics = Me.PictureBox1.CreateGraphics Dim myBrush As New System.Drawing.Drawing2D.HatchBrush(System.Drawing.Drawing2D.HatchStyle.Plaid,Color.Red,Color.Blue) g.FillEllipse(myBrush,150,150)) 运行后效果图如下: 3、复杂图案 纹理画笔 TextureBrush 通过使用图像作为图案来填充形状或文本。 下面的示例说明如何创建一个 TextureBrush,它使用名为 qqread.bmp 位于C盘下的图像进行绘制。 Dim g As Graphics = Me.PictureBox1.CreateGraphics Dim myBrush As New TextureBrush(New Bitmap("C:qqread.bmp")) g.FillEllipse(myBrush,150)) 运行后效果如下所示: 4、复杂底纹 渐变画笔支持复杂底纹。使用 LinearGradientBrush,可以创建沿线性渐变的两种颜色平滑、渐进式的混合。PathGradientBrush 支持许多更复杂的底纹和着色选项。下面的示例说明如何使用 LinearGradientBrush 笔刷实现由红色逐渐向黄色混合而形成的渐变。 Dim g As Graphics = Me.PictureBox1.CreateGraphics Dim myBrush As New System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle,Color.Yellow,System.Drawing.Drawing2D.LinearGradientMode.Vertical) g.FillEllipse(myBrush,150)) 运行后效果如下图所示: 本文是针对GDI+编程的入门知识,我们绘制更复杂的图形都是在熟练运用这些知识的基础上的,下一步我们就去了解如何使用GDI+绘制线图。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |