GDI+( Graphics Device Interface Plus)是 Windows操作系统用来执行绘画及其他相关图形操作的一套子系统,是由. Net Framework中的System.Drawing命名空间提供的一组通过C++类实现的应用程序编程接口,主要负责显示屏幕和打印设备输出的有关信息,它使开发人员可以利用 Windows内置的图形功能轻松地创建图形应用程序。

作为图形设备接口的GDI+使得应用开发人员在输出屏幕和打印机信息时无需考虑具体显示设备的细节,只需调用GDI+库输出的类的一些方法即可完成图形操作,真正的绘图工作由这些方法交给特定的设备驱动程序来完成,GDI+使得图形硬件和应用程序相互隔离从而使开发人员编写与设备无关的应用程序变得非常容易。本教程将以 VB.Net中的GDI+的技术来实现各种绘图功能。

GDI+绘图的流程

  1. 创建 Graphics对象;
  2. 创建画笔和画刷;
  3. 使用 Graph对象的绘图方法绘制图形输出文字等;
  4. 释放 Graphics对象和绘图对象所占用的系统资源。
    'Form1_Paint是当窗体重绘制图形时候触发,如:窗体初始化、窗体改变大小,都会触发这个paint事件来完成图形的重画工作。Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint'创建 Graphics对象Dim g As Graphics = e.Graphics'创建画刷Dim b As SolidBrush = New SolidBrush(Color.Blue)'创建字体Dim f As Font = New Font("宋体", 15, FontStyle.Bold)'绘制文字g.DrawString("Hello,World!", f, b, 30, 60)'释放 Graphics对象和绘图对象所占用的系统资源f.Dispose()b.Dispose()g.Dispose()End Sub

刨建 Graphics对象

在VB.NET中用GDI+创建绘图,必须先创建 Graphics对象。 Graphices对象表示GDI+的绘图表面,是用来绘制图形图像的容器。创建 Graphics对象后,才可以使用GDI+的画笔、
画刷等结合Color、Font等对象进行绘制线条形状、填充区域、显示文本图像等操作。

VB. NET中的窗体和所有具有Text属性的控件都可以作为绘制图形的表面。创建Graphics对象有以下3种方法。

1.使用 Create Graphics方法创建

通过使用某控件或窗体的 CreateGraphics方法来灵活获取对Graphics对象的引用,该对象表示该控件或窗体的绘图表面。这是一种常见的创建方法,其格式为

Dim 对象名 As Graphics
对象名=窗体名(或控件名).CreateGraphics
2.利用PaintEventArgs参数传递 Graphics对象

通过窗体或控件的Pait事件可以直接完成图形绘制,在编写Pant事件处理程序时,利用参数 PaintEventArgs提供的窗体图形对象。格式为

Dim 对象名 As Graphics
对象名=e.Graphics
3.从 Image对象创建

创建 Graphics对象还可以由Image对象或者lmage类派生的任何对象来创建。调用Graphics.Fromlmage,提供要从其中创建 Graphics对象的Imge变量的名称,如下面代码所示:

Dim myBitmap as New Bitmap("C:\myPic")
Dim g as Graphics =Graphics.Fromlmage( myBitmap)

创建画笔和画刷

在获得一个 Graphics对象之后,接下来就要决定在表面上如何进行绘制。可能需要以
下对象中的一个或几个画笔、画刷。在GDI+中,Pen类和Brush类分别表示画笔和画刷。
在需要绘制直线、矩形和曲线的边界时使用画笔在需要填充图形对象时使用画刷。

1.画笔Pen

在Graphics画布上处理图形的轮廓部分需要使用的工具是画笔Pen。通过使用Pen类可以设置所画线条的颜色、线宽和样式,在使用前需要引用System.Drawing.Drawing2D名称空间。创建画笔的格式为:

Dim pen As New Pen(Color.Brown, 5)
2.画刷Brush

画刷Brush主要用于封闭图形的填充.

  1. 只能用一种颜色填充区域的称为单色刷,声明单色刷的格式为:
Dim mybrush As New SolidBrush(Color.Brown)
  1. 用一个图片来填充图形的画刷称为纹理刷,声明纹理刷的格式为:
Dim d As New TextureBrush(New Bitmap("path"))
  1. 用线性渐变色来填充图形的画刷称为渐变刷,声明渐变刷的格式为:
Dim d As New LinearGradientBrush(New Point(10), New Point(10), Color.White, Color.Black)
  1. 用条纹模式来填充图形的画刷称为网格刷,声明网格刷的格式为:
Dim d As New HatchBrush(HatchStyle.BackwardDiagonal, Color.White,  Color.Black)

图形绘制

1. 绘制直线的格式为:g.DrawLine(pen, 10, 10, 250, 10) 或者 g.DrawLine(pen, New Point(10, 10), New Point(250, 10))

2. 绘制矩形的格式为:g.DrawRectangle(pen, 10, 10, 250, 10)

2.5 绘制圆 g.DrawEllipse(pen, 10, 10, 50, 50)

3. 绘制椭圆的格式为:g.DrawEllipse(pen, New Rectangle(10, 10, 50, 10))
参数pen为画笔,参数rect为Rectangle结构,指定圆的外切矩形区域。

4. 绘制弧线的格式为:

5. 绘制扇形

6. 绘制非闭合曲线

7. 填充图形填充矩形的格式与对应绘制图形的方法相似,区别是方法名由“绘制”改为“填充”,对应参数pen换成brush。

8. Clear方法使用Clear方法可以清除整个画布并以指定的背景色填充。

使用 Graphics对象

在创建 Graphics对象、画笔或画刷之后,就可以绘制直线、边框、曲线或图像了。 Graphis类为绘制和填充图形、曲线或图像提供了相应的方法。例如, DrawEllipse使用特定的画
笔来绘制椭圆的边界,而FillEllipse将使用一种填充颜色来绘制椭圆。绘制方法使用画笔作为参数,而填充方法则使用画刷作为参数。

释放 Graphics对象

在 Graphics对象使用完毕后,必须将其释放。在VB.NET中提供了一个 Dispose方法,此方法可以用来释放Graphics对象、画笔对象等所占用的全部资源。

例如创建g为 Graphics对象,使用完后用g.Dispose()释放。

计算机图形学基础-第二章 VB.NET 绘图基础相关推荐

  1. 【XJTUSE计算机图形学】第二章 光栅图形学(1)

    文章目录 [XJTUSE计算机图形学]第二章 光栅图形学(1) 1.基本概念 2.直线段的扫描转换算法 数值微分(DDA)法 增量算法 中点画线法[重点] Bresenham算法[重点 很有可能会考] ...

  2. 【数据分析师---数据可视化】第二章:plotly绘图基础篇

    plotly绘图基础篇 1 Plotly简介与安装 2 Plotly简单绘图入门 3 Plotly绘制散点图和饼图 4 Plotly绘图流程详细梳理 5 Plotly绘制密度图和三维散点图 5.1 绘 ...

  3. 【VB测绘程序设计】第二章 VB测绘程序基础

    第一节 数据类型 VB中提供了以下11中基本的数据类型: 一.数值型 二.字符串 三.日期型 1.界面设计 2. 代码 <

  4. 简述计算机软件系统的功能及分类,第二章 管理信息系统技术基础

    第二章管理信息系统技术基础 1 计算机系统的组成 1.简述计算机系统组成? 答:计算机系统由硬件系统和软件系统两大部分组成. 硬件系统:计算机的硬件是指组成一台计算机的各种物理装置,由运算器.控制器. ...

  5. 计算机文化基础第二章,计算机文化基础(第二章Windows2000操作系统)

    计算机文化基础(第二章Windows2000操作系统) 第二章Windows 2000 操作系统1. 打开"资源管理器"的方法不能是_A右击"开始"按钮 B选择 ...

  6. 计算机图形学基础第七章ppt,计算机图形学 -第七章讲义ppt课件

    <计算机图形学 -第七章讲义ppt课件>由会员分享,可在线阅读,更多相关<计算机图形学 -第七章讲义ppt课件(54页珍藏版)>请在人人文库网上搜索. 1.第七章 三维观察,本 ...

  7. 第二章 VB的界面设计

    轉自:http://wwww.hyit.edu.cn/edu/vb/study/index.htm 第二章         VB的界面设计 2.1  VB用户界面设计基础 1. 概述 界面的设计有两步 ...

  8. 第三章 VB程序设计语言基础

    第三章 VB程序设计语言基础 一 VB中的数据与运算 二 标准函数 三 三种基本结构(顺序,判定,循环) 一 VB中的数据与运算 3.1.1 数据类型 3.1.2 变量与常量 3.1.3 运算符和表达 ...

  9. 计算机图形学中几何变换的定义,计算机图形学-第5章-几何变换课件

    <计算机图形学-第5章-几何变换课件>由会员分享,可在线阅读,更多相关<计算机图形学-第5章-几何变换课件(70页珍藏版)>请在人人文库网上搜索. 1.计算机图形学-第5章-几 ...

  10. 计算机图形学三维变换论文,计算机图形学 第5章 三维图形生成和变换技术

    计算机图形学 第5章 三维图形生成和变换技术 (63页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 第五章 目录第五章 三维图形生成和变 ...

最新文章

  1. java curl json_curl javaSSm框架中传入json数组的格式方法
  2. Webservices
  3. Apache2.2中文手册
  4. struts2+hibernate-jpa+Spring+maven 整合(1)
  5. 命名空间不能直接包含字段或方法之类的成员_Linux内存取证:解析用户空间进程堆(中)...
  6. aapt2 资源 compile 过程
  7. SNF软件开发机器人-子系统-导出-导入功能-多人合作时这个功能经常用到
  8. [Java]LeetCode138. 复制带随机指针的链表 | Copy List with Random Pointer
  9. Go 源码学习之--net/http
  10. linux内核文件恢复,linux下系统文件恢复
  11. Scala 隐式转换和隐式参数
  12. java报错: 类重复: newemission.calculate_java当中的继承(一)
  13. 钢结构设计软件:IDEA StatiCa 21.1.4.X Crack-new
  14. APMCon2017 | 一大波技术大神来袭,你要的性能优化干货这里全都有
  15. 三代测序组装工具Canu学习笔记
  16. Erlang学习时间曲线
  17. android app申请内存大小,Android中App可分配内存的大小
  18. python课程改进建议_关于Python课程的思考和意见
  19. MySQL自增主键auto_increment原理 与 自增主键出现间隙不连续现象的定位
  20. 2022年熔化焊接与热切割考试题模拟考试题库及模拟考试

热门文章

  1. 机械振动学|单自由度系统
  2. 遗传算法原理与应用详解
  3. 硕士研究生毕业论文书写格式总结
  4. 艺术名家|翰墨异彩“三分书”——访知名书法家蔡爱军
  5. 第一部分:基础知识(第一章)XAP 就是 ZIP
  6. html-制作开心网游戏页面,【手把手】制作一个简单的HTML网页
  7. 软考中级数据库系统工程师备考详细资料
  8. 【黑苹果】联想Lenovo ThinkPad E550+i55200U+macos10.13.x efi文件下载
  9. ImageView和ImageButton的区别
  10. Hadoop权威指南