图形图像操作
TextureBrush
LinearGradientBrush 使用沿渐变混合的两种颜色进行绘制。 PathGradientBrush 基于开发人员定义的唯一路径,使用复杂的混 合色渐变进行绘制。
四、字体Font类
Font类用于指定文本格式,就像我们在 其它应用程序中设置字体、字号等。
可利用Font构造函数创建字体, Font构造函数重 载很多,主要有: Font (Font, FontStyle) Font (FontFamily, Single) Font (String, Single) Font (FontFamily, Single, FontStyle) Font (String, Single, FontStyle) Font 为现有的Font对象,从该对象创建新的Font对象, FontFamily为字体类型,Single为字体的大小 FontStyle 应用于新的Font对象的FontStyle枚举,可以用 or运算符将FontStyle枚举的多个值组合起来。
Font对象的几个主要属性如下:
FontFamily 属性:获取与此 Font 对象关联的 FontFamily 对象,FontFamily 对象表示具有类似的字 体,但字号和字形可能不同的一组字体。例如,宋体、 楷体、Arial、Times New Roman 和 Verdana。 Bold 属性:指示此 Font 对象是否为粗体,如果此 Font 对象为粗体,则该属性返回 true;否则返回 false。 Italic 属性:指示此 Font 对象是否为斜体,如果此 Font 对象为斜体,则该属性返回 true;否则返回 false。 Underline 属性:指示此 Font 对象是否有下划线。
(3) 从继承自Image类的任何对象创建Graphics对象 此方法在需要更改已存在的图像时十分有用,例如: Dim myBitmap as New Bitmap("C:\myPic.bmp") Dim g as Graphics = Graphics.FromImage(myBitmap)
11.2.4 绘图工具
(2)用户定义的颜色
使用 Color.FromArgb 方法来实现用户定义的颜色, 使用 Color.FromArgb 方法时,我们按顺序指定颜色中 红色、蓝色和绿色各部分的强度,如下所示: Dim myColor as Color
myColor = Color.FromArgb(20,58,77) 色值中的每个数字均必须是从0到255之间的一个整数, 其中0表示没有该颜色,而255则为所指定颜色的完整饱 和度;因此,Color.FromArgb(0,0,0) 为黑色,而 Color.FromArgb(255,255,255) 为白色。
11.4 基本图形的绘制
11.4 .1 画直线
一、DrawLine 方法
该方法绘制一条连接由坐标对指定的两个点 的线条,所以我们需要指定这两个点的坐标, 如下所示:
DrawLine(pen,x1,y1,x2,y2)或者 DrawLine(pen,Point1, Point2)
下面示例将在PictureBox控件表面绘制一条直线:
Pen:用于绘制线条、勾勒形状轮廓等; Brush:用于填充图形区域; Font :提供有关在呈现文本时要使用什么 形状的说明; Color:该结构表示要显示的不同颜色
一、颜色(Color结构)
(1)系统定义的颜色 通过 Color 结构访问中枚举的若干系 统定义的颜色,例如可以通过如下方式获取系统 颜色。 Dim myColor as Color myColor = Color.Red myColor = Color.Aquamarine myColor = Color.LightGoldenrodYellow myColor = Color.PapayaWhip myColor = Color.Tomato
第十一章 图形图像操作
1. 理解中坐标系的概念;
2. 掌握GDI+进行图形图像程序设计
3.了解Windows API图形程序设计
11.1 坐标系统
在Visual Basic .NET 中,坐标以像素为单位表示。坐标 系统是指在屏幕(screen)、窗体(form)、容器 (container)上定义的表示图形对象位置的平面二维格线, 一般采用数对(x,y)的形式定位。其中,x值是沿x轴点的 位置,最左端是默认位置为0。y值是沿y轴点的位置,最上 端是默认位置(0,0) 。 原点(0,0)
画笔来绘制线条、曲线以及勾勒形状轮廓,它是 Pen 类的实例。 Dim redPen as New Pen(Color.Red) Dim redBoldPen as New Pen(Color.Red, 5) 可以在创建画笔之后对它的宽度、样式、颜色等属性进行调整: 宽度(Width):使用该画笔时所绘线条的宽度,默认的画笔宽度是 一个像素单位;可在创建时设定。 样式(DashStyle):画笔绘制图形时的线型,包括实线、虚线、点 线以及由点线与虚线组成的点划线、双点划线等多种样式;
(2)利用窗体或某个控件的CreateGraphics 方法 此方法所建对象是该控件或窗体的绘图区域,可把当前窗体的 画刷、字体、颜色作为缺省值获取对Graphics对象的引用, 注意这种对象只有在处理当前 Windows 窗口消息的过程中有效; 如果想在已存在的窗体或控件上绘图,可以使用此方法。 例如: Dim g As Graphics =Me.CreatGraphics()
简单绘图示例
11.2.3 创建Graphics对象
(1)在窗体或控件的Paint事件中直接引用Graphics对象
每一个窗体或控件都有一个 Paint事件,该事件的参数 中包含了当前窗体或控件的 Graphics对象,在为窗体或控 件创建绘制代码时,一般使用此方法来获取对图形对象的 引用:
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint Dim g As Graphics = e.Graphics; …… End Sub
Dim myColor as Color
myColor = Color.FromArgb(127, 20, 58, 77)
创建自定义颜色,且大致为 50% 透明度。 Dim myColor as Color myColor = Color.FromArgb(128, Color.Tomato)
二、phics = Me.PictureBox1.CreateGraphics Dim mpen As New Pen(Color.Red) g.DrawLine(mpen, 0, 80, 0, 160)
也可以使用如下代码来实现一样的效果:
Dim g As Graphics = Me.PictureBox1.CreateGraphics Dim mpen As New Pen(Color.Red) Dim p1 As Point = New Point(0, 80)
字体对象创建示例
创建一个Font对象,该字体为宋体,大小20,粗体、斜体 加删除线: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim g As Graphics = Me.CreateGraphics Dim mBrush As New SolidBrush(Color.Red) Dim mFont As Font = New Font(New FontFamily("宋体 "), 20, FontStyle.Bold Or FontStyle.Italic Or FontStyle.Strikeout) g.DrawString(“测量平差程序设计", mFont, mBrush, 50.0F, 50.0F) End Sub
11.2 GDI+绘图基础
GDI+是Windows XP操作系统中提供二维矢量图形、图像 处理和版式的部分。GDI+在 GDI(较早版本的Windows中 提供的 Graphics Device Interface)的基础上进行了改进, 添加了新功能并优化了现有功能。 GDI+主要有二维矢量图形、图像处理和版式三部分组成 GDI+提供了存储基元自身相关信息的类和结构、存储基元 绘制方式相关信息的类,以及实际进行绘制的类 GDI+ 为使用各种字体、字号和样式来显示文本这种复杂 任务提供了大量的支持 其他高级功能
(3)Alpha 混合处理(透明度)
Color.FromArgb 方法除了可以指定RGB(红、绿、蓝)三色, 还有一个Alpha参数,Alpha 表示所呈现图形后面的对象的透 明度,对于各种底纹和透明度效果很有用。 在 Color.FromArgb 方法中四个参数的第一个参数即是Alpha 参数,取值范围是从 0 到 255 之间的任一整数。如下两例:
11.2.1 图形图像处理中名称空间
System.Drawing:提供了对GDI+基本图形功能的访问, 主要有Graphics类、Bitmap类、从Brush类继承的类、 Font类、Icon类、Image类、Pen类、Color类等
System.Drawing.Drawing2D:提供了高级的二维和矢 量图形功能。主要有梯度型画刷、Matrix类(用于定 义几何变换)和GraphicsPath类等 System.Drawing.Imaging:提供了高级 GDI+ 图像处理 功能