eshop-mis 供应商信息的查询与图形化显示

24
VB.NET 程程程程 程程程程程程程程程程 eShop-MIS 供供供供供供供供供供供供 供供

Upload: jag

Post on 22-Jan-2016

86 views

Category:

Documents


0 download

DESCRIPTION

eShop-MIS 供应商信息的查询与图形化显示. 长沙民政职业技术学院. 本单元知识点. 1. VB.NET 中绘制图形的常见对象的使用. 2. 掌握颜色、画笔、画刷的使用方法. 3. 掌握 Graphics 的各种绘制图形的方法. 4. 熟悉开发图形程序的流程、方法. 主要内容. 8.1 、任务描述、分析与实现 8.2 、坐标系统 8.3 、颜色系统 8.4 、 Graphics 对象 8.5 、拓展实践 —— 简单绘图软件的实现. 8.1 、任务描述与实现. 问题描述. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: eShop-MIS 供应商信息的查询与图形化显示

VB.NET 程序设计

长沙民政职业技术学院

eShop-MIS 供应商信息的查询与图形化显示

Page 2: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

本单元知识点

VB.NET 中绘制图形的常见对象的使用 1

掌握颜色、画笔、画刷的使用方法 2

掌握 Graphics 的各种绘制图形的方法 3

熟悉开发图形程序的流程、方法4

Page 3: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

主要内容

8.1 、任务描述、分析与实现8.2 、坐标系统8.3 、颜色系统8.4 、 Graphics 对象8.5 、拓展实践——简单绘图软件的实现

Page 4: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

8.1 、任务描述与实现

在供应商信息管理系统中,要示提供按省份的查询功能,并以条形图的方式显示每个省份供应商的数量,以扇形图的方式显示各省份供应商所占的比例

问题描述

Page 5: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

实现任务的主要思路

创建 VB项目

界面设计

代码设计

调试运行

打开 7-1的项目 VB_SupplierMgr

1、添加两个按钮“条形统计图”和“扇形统计图”2、添加一个 PictureBox控件用来显示图形

1、添加一个数组,用来保存统计各省份供应商的数量2、添加一个函数来统计各个省份的供应商数量3、根据数据绘制图形

•F5调试运行程序•F9设置 /清除断

点•F8逐语句运行程

所涉及到的主要知识点:• 坐标系统、颜色系统• Graphics 对象以及其绘图方法• PictureBox 控件

Page 6: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

主要实现环节(数据准备)

0 、系统原来的供应商省份信息保存在 AArea() 数组中,为了测试方便,先用随机函数 Rnd 随机生成数据

' 随机生成供应商地区信息数据 Function GenData() As String() Dim i, k As Integer For i = 0 To MAX_NUMS - 1 k = Rnd() * (MAX_AREAS - 1) AArea(i) = Area(k) Next Return Me.AArea End Function

1 、添加一个数组,记录各省份供应商的数量 Private ANumsByArea(MAX_AREAS) As Integer

2 、供应商所分布的省份 的数组 Private Area() As String = {" 湖南 ", " 湖北 ", " 河

南 ", " 河北 "} 3 、定义常量,供应商共分布在 4 个 省份

Const MAX_AREAS As Integer = 4

Page 7: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

主要实现环节(定义过程)

4 、设计一个过程来统计各省供应商的数量 ' 按地区统计每个省份供应商人数,并记录在

AnumsByArea 数组中 Function GetSuppliersByArea() As Integer() Dim i, j As Integer For i = 0 To MAX_NUMS-1 For j = 0 To MAX_AREAS-1 If Me.AArea(i) = Me.Area(j) Then Me.ANumsByArea(j) += 1 End If Next Next Return Me.ANumsByArea End Function

Page 8: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

主要实现环节(条形图的实现)Private Sub btnRect_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnRect.Click '获取绘图对象 Dim g As Graphics g = Me.picDraw.CreateGraphics Dim i As Integer '清除图像 g.Clear(Me.picDraw.BackColor) '定义绘制文字的格式 Dim fr As New StringFormat(StringFormatFlags.DirectionVertical) For i = 0 To MAX_AREAS - 1 '定义绘图的颜色 Dim c As Color = System.Drawing.ColorTranslator.FromOle(QBColor(i)) '定义画笔 Dim pen As New Pen(c, 1) '定义填充的画刷 Dim br As New SolidBrush(c) '绘制条形 g.DrawRectangle(pen, 10 + 40 * i, 0, 10, Me.ANumsByArea(i)) '填充条形 g.FillRectangle(br, 10 + 40 * i, 0, 10, Me.ANumsByArea(i)) '绘制文字 g.DrawString(Area(i) & " " & Me.ANumsByArea(i), Me.Font, Brushes.Red, _ 10 + 40 * i, Me.ANumsByArea(i) + 10, fr) Next End Sub

Page 9: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

主要实现环节——扇形图的实现(一)

Private Sub btnPie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPie.Click

'获取绘图对象 Dim g As Graphics g = Me.picDraw.CreateGraphics g.Clear(picDraw.BackColor) Dim i, sum As Integer

'求供应商的数量 For i = 0 To MAX_AREAS - 1 sum += Me.ANumsByArea(i) Next

Page 10: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

主要实现环节——扇形图的实现(二)

Dim stangle As Integer = 0 For i = 0 To MAX_AREAS - 1 '定义绘图的颜色 Dim c As Color = _ System.Drawing.ColorTranslator.FromOle(QBColor(i)) '定义画笔 Dim pen As New Pen(c, 1) '定义填充的画刷 Dim br As New SolidBrush(c) '绘制扇形 Dim angle As Single = Me.ANumsByArea(i) / sum * 360 g.DrawPie(pen, 0, 0, picDraw.Width, picDraw.Height, stangle, angle) '填充扇形 g.FillPie(br, 0, 0, picDraw.Width, picDraw.Height, stangle, angle) ‘在此处添加绘制文字的代码 stangle += Me.ANumsByArea(i) / sum * 360 Next

Page 11: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

主要实现环节——扇形图的实现(三)

Dim x, y As Integer '计算文字的坐标 x = Math.Cos((stangle + angle / 2) / 360 * 2 * 3.14) * picDraw.Width / 3 y = Math.Sin((stangle + angle / 2) / 360 * 2 * 3.14) * picDraw.Width / 3 '绘制文字 x += Me.picDraw.Width / 2 y += Me.picDraw.Height / 2 g.DrawString(Area(i) & Me.ANumsByArea(i) / sum * 100 & "%", _ Me.Font, Brushes.Red, x, y, StringFormat.GenericDefault)

下面的代码在扇形图中绘制文字

Page 12: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

8.2 、坐标系统

Visual Basic 的坐标系统是指在屏幕( screen )、窗体 (form) 、容器 (container) 上定义的表示图形对象位置的平面二维格线,一般采用二元组( x, y )的形式定位。其中 x 值是沿 x 轴点的位置,最左端是缺省位置 0 。 y 值是沿 y 轴点的位置,最上端是缺省位置 0 。窗体的坐标系统的图示

Page 13: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

8.3 、颜色系统

Visual Basic 使用固定的颜色系统,每种颜色都由一个 Long 型整数表示。主要有 4 种方式可以用于指定颜色值: RGB 函数。 QBColor 函数。 Visual Basic 的 Color 对象中的内部颜色函数。 输入 Long 型整数颜色值。

Page 14: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

QBColor 函数

QBColor 函数能够选择 Microsoft Quick Basic 的 16 种颜色中的一种 .

数字 颜色 数字 颜色

0 黑色 8 灰色

1 蓝色 9 浅蓝色

2 绿色 10 淡绿色

3 青色 11 淡青色

4 红色 12 浅红色

5 洋红色 13 浅洋红色

6 黄色 14 淡黄色

7 白色 15 亮白色

Me.BackColor = System.Drawing.ColorTranslator.FromOle(QBColor(5))

Page 15: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

RGB 函数

在计算机中,使用 RGB 模型来定义颜色,即任何颜色都可以用红色、绿色、蓝色三种基色的不同比例来表示。每种基色用一个 0 ~ 255 之间的数字来表示颜色的饱和度,最小值 0 表示没有颜色,最大值 255 表示为颜色的最高饱和度。如 (0,0,0) 表示什么颜色都没有,即黑色。而 (255,255,255) 表示各种颜色的最高饱和度,即白色。计算机所能表示的颜色为 256×256×256 = 16 777 216 种。 RGB(Red ,Green ,Blue) Me.BackColor = System.Drawing.ColorTranslator.FromOle(RGB(0, 0, 255))

颜色 红色值 R 绿色值 G 蓝色值 B

黑色 0 0 0

蓝色 0 0 255

绿色 0 255 0

青色 0 255 255

红色 255 0 0

洋红色 255 0 255

黄色 255 255 0

白色 255 255 255

Page 16: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

Color 结构

Color 是一个表示颜色的数据结构,位于 System.Drawing 名称空间下面,提供了很多获取系统颜色的属性与方法

属性或方法名

说明

Red 获取系统的红色表示Green 绿色Blue 蓝色Yellow 黄色White 白色Orange 橙色Pink 粉红色R 获取此 Color 结构的红色分量值,必须要通过 Color

的对象来访问。G 获取此 Color 结构的绿色分量值,必须要通过 Color

的对象来访问。B 获取此 Color 结构的蓝色分量值,必须要通过 Color

的对象来访问。FromArgb

()根据指定的参数生成一个 Color 结构

Dim c As System.Drawing.Color

c = Color.FromArgb(255, 0, 0) ' 构造一个颜色为绿色结构Me.BackColor = c ' 设置窗体的前景色为绿色

Page 17: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

用整数直接设置颜色

蓝色分量 绿色分量 红色分量

因此一个 16 进制的数 &HFF0000 所代表的颜色用 RGB 表示为 RGB(0,0,&HFF) ,即为蓝色。以下的代码将窗体的背景颜色改为绿色,

Me.BackColor = System.Drawing.ColorTranslator.FromOle(&H00FF00)

Page 18: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

常用的绘图类

类 / 结构 说明

System.Drawing.Bitmap 封装 GDI+ 位图,该位图由图形图像及其属性的像素数据组成。 Bitmap 是一个用于处理由像素数据定义的图像的对象。

System.Drawing.Brushes 定义所有标准颜色所对应的画笔。

System.Drawing.Color 表示一种 ARGB 颜色。

System.Drawing.Font 定义文本的特定格式,包括字体、字号和样式属性。

System.Drawing.Pen 定义用于绘制直线和曲线的对象。

System.Drawing.Pens 定义所有标准颜色所对应的钢笔。

System.Drawing.Point 提供有序的 x 坐标和 y 坐标整数对,该坐标对在二维平面中定义一个点。

System.Drawing.Rectangle 存储一组表示矩形的位置和大小的四个整数。若需更多高级区域功能,请使用 Region 对象。

System.Drawing.SolidBrush 定义单个颜色所对应的画笔。画笔用于填充图形形状,如矩形、椭圆、扇形、多边形和轨迹。

System.Drawing.TextureBrush TextureBrush 类的每个属性都是一个使用图像填充形状内部的 Brush 对象。

Page 19: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

PictureBox 控件 与 ImageList控件

PictureBox 一个图片框控件,位于 System.Windows.Forms 的名称空间内,通常使用 PictureBox 来显示位图、元文件、图标、 JPEG 、 GIF 或 PNG 文件中的图形。 PictureBox 的常见属性与方法

ImageList 控件是一个图片集管理器,支持bmp、 gif 、 jpg等图像格式。其属性 Images 用于保存多幅图片以备其他控件使用,其他控件可以通过 ImageList 控件的索引号和关键字引用 ImageList 控件中的每个图片。 ImageList 控件在运行期间是不可见的,因此添加一个 ImageList 控件时,它不会出现在窗体上,而是出现在窗体的下方。 ImageList 控件的一些常见属性和方法

Page 20: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

【案例 8-3】利用 PictureBox 与 ImageList 控件建立图片管理程序

ͼƬ¹ÜÀíÆ÷ʵÏÖ¹ý³Ì

Page 21: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

8.4 Graphics 对象

在 Visual Basic.NET中,提供了在控件上绘制图形的两种方法: 1 ) 使用 CreateGraphics 方法 2) 重写OnPaint方法

Page 22: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

使用 CreateGraphics 方法绘图

(1)声明一个 Graphics 对象。 (2) 用 CreateGraphics 方法建立—个 Graphics 对象。 (3) 用绘图方法画图。Dim g As Graphicsg = Me.CreateGraphics ()Dim myPen As New Pen(Color.Red,3)g.DrawLine(myPen, 0, 0, 150, 200)

Page 23: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

Graphics 类包含许多绘制操作方法和图像操作方法 (查找帮助学习)

(1) 绘制直线的方法: DrawArc 、 DrawBezier 、 DrawEllipse 、 DrawImage 、 DrawLine 、 DrawPolygon 、 DrawRectangle 和 DrawString 。

(2)填充形状的方法: FillClosedCurve 、 FillEllipse 、FillPath、 FillPolygon 和 FillRectangle 。

(3)清除绘图图面的方法: Clear 。 (4)从图像创建新的 Graphics 对象的方法: FromI

mage 。

Page 24: eShop-MIS 供应商信息的查询与图形化显示

长沙民政学院软件学院

8.5、拓展实践——简单绘图软件的实现

【案例 8-4】利用 Graphics 对象创建简单画笔程序

³ÌÐòʵÏÖ²½Öè