版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
前面几篇介绍了如何使用graphics绘制图像,这几篇准备介绍如何使用graphics提供的方法绘制统计图。

包括:柱状图、折线图、饼图。

假设知道某个公司1-4季度的盈利情况,我们来看看如何完成统计图

新建一个窗体,

添加4个标签,分别是“一季度”、“二季度”、“三季度”、“四季度”

添加4个numericupdown,名称从 nudsesson1 至 nudsesson4

添加4个按钮,名称为btnBarGraph、btnLineChart、btnPie、btnSave,对应Text属性为 柱状图、折线图、饼图、保存

图示如下:

以柱状图为例,目前考虑的步骤:

1、创建graphics对象

2、绘制坐标轴

3、绘制立柱

4、显示出来

新建窗体级变量:

    Dim g As GraphicsDim bmp As Bitmap

在窗体载入的时候将bmp、g实例化,bmp的大小根据实际需要建立:

    Private Sub Form7_Load(sender As Object, e As EventArgs) Handles MyBase.Loadbmp = New Bitmap(600, 350)g = Graphics.FromImage(bmp)End Sub

当按下“柱状图”按钮的时候调用三个函数,分别是绘制坐标轴、绘制立柱、显示到窗口:

    Private Sub btnDraw_Click(sender As Object, e As EventArgs) Handles btnBarGraph.ClickCall DrawAxis()Call DrawBarGraph()Call DrawToForm()End Sub

以下分别介绍上面所说的三个函数,详细说明标注在源代码中了:

    '绘制坐标轴Private Sub DrawAxis()'使用红色绘制坐标轴Dim p As New Pen(Color.Red, 1)'坐标轴末尾箭头p.EndCap = Drawing2D.LineCap.ArrowAnchor'坐标原点Dim originX As Integer = 40Dim originY As Integer = 320Dim originPoint As Point = New Point(originX, originY)'绘制横坐标g.DrawLine(p, originPoint, New Point(540, 320))'绘制纵坐标--http://blog.csdn.net/uruseibestg.DrawLine(p, originPoint, New Point(40, 20))'红色绘制坐标轴刻度Dim pAxisY As New Pen(Color.Red, 1)Dim AxisYPos As PointDim AxisYValue As String'在纵轴上标明刻度线,从0-90,每10个刻度标注一下'注意的是,我们使用了1:3的比例For i As Integer = 0 To 9'刻度值AxisYValue = (i * 10).ToString'刻度位置AxisYPos = New Point(20, originY - i * 30 - 5)'标明刻度值g.DrawString(AxisYValue, New Font("宋体", 10), New SolidBrush(Color.Blue), AxisYPos)'画刻度,实际0刻度线是和横坐标轴重合g.DrawLine(pAxisY, New Point(40, originY - i * 30), New Point(50, originY - i * 30))NextEnd Sub
    '绘制立柱Private Sub DrawBarGraph()'标注每个季度Dim seasonValue(3) As IntegerseasonValue(0) = nudSeason1.ValueseasonValue(1) = nudSeason2.ValueseasonValue(2) = nudSeason3.ValueseasonValue(3) = nudSeason4.ValueDim seasonName() As String = {"一季度", "二季度", "三季度", "四季度"}'立柱(矩形)的左上角坐标点Dim recX, recY As Integer'循环画四个矩形--http://blog.csdn.net/uruseibestFor i As Integer = 0 To 3recX = (i + 1) * 80'注意:我们的坐标轴是按照1:3绘制,所有这里需要*3recY = 320 - seasonValue(i) * 3g.FillRectangle(New SolidBrush(Color.Blue), New Rectangle(recX, recY, 40, seasonValue(i) * 3))Next'标出每个季度Dim strX, strY As IntegerFor i As Integer = 0 To 3strX = (i + 1) * 80 - 5strY = 325g.DrawString(seasonName(i), New Font("黑体", 10), New SolidBrush(Color.Blue), New Point(strX, strY))NextEnd Sub
    '将bmp绘制到窗体表面Private Sub DrawToForm()Dim g1 As Graphics = Me.CreateGraphicsg1.DrawImage(bmp, New Point(0, 0))End Sub

当按下“柱状图”按钮时,如下图所示:

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看 vb.net 教程 目录

vb.net 教程 5-12 绘图实例之统计图 1 柱状图相关推荐

  1. vb.net 教程 5-12 绘图实例之统计图 3 饼图

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 继续上一期<绘图实例之统计图2>,继续讲解如何绘制饼图: 当按下"饼图&q ...

  2. vb.net 教程 5-12 绘图实例之统计图 2 折线图

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 继续上一期<绘图实例之统计图1>,继续讲解如何绘制折线图: 当按下"折线图 ...

  3. vb.net 教程 5-12 绘图实例之统计图4

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 窗体上我们设置了4个按钮,还有一个就是将绘制的统计图保存下来: Private Sub btnS ...

  4. vb.net 教程 5-12 绘图实例之统计图1

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 前面几篇介绍了如何使用graphics绘制图像,这几篇准备介绍如何使用graphics提供的方法 ...

  5. [Qt教程] 第12篇 2D绘图(二)渐变填充

    [Qt教程] 第12篇 2D绘图(二)渐变填充 楼主  发表于 2013-4-23 17:59:31 | 查看: 689| 回复: 1 渐变填充 版权声明 该文章原创于Qter开源社区,作者yafei ...

  6. vb.net 教程 20-4 库存管理系统3.12 出库管理(FormStorageOut)

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 关于<Visual Basic.Net 循序渐进>请到百度网盘下载,具体下载地址: ...

  7. vb.net 教程 3-2 窗体编程之窗体 1

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 个人理解:windows系统是消息驱动型的系统,消息带来事件,事件引发处理. 比如按下按钮消息, ...

  8. vb.net 教程 8-3 数据库操作3

    订阅专栏 版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 本节在上一节的基础上学习在Command中设置sql语句参数: 还是以一个实例说明: ...

  9. vb.net 教程 1-8 日期时间类型1

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. vb.net中日期时间函数使用DateTime,vb6中用的是Date,vb.net中也可以将日 ...

最新文章

  1. 【滴滴专场】深度学习模型优化技术揭秘
  2. Scala变量和常量
  3. MySQL中MyISAM 与innoDB的区别(转)
  4. tuxedo相关概念
  5. Redis安装及基本配置
  6. php+mysqli,php+mysqli数据库连接的两种方式
  7. 学不会的JAVA,消不了的忧愁! 1
  8. 【java8新特性】——Optional详解(三)
  9. 某公司为本科以上学历的人重新分配工作,分配原则如下。 (1)如果年龄不满18岁,学历是本科,男性要求报考研究生,女性则担任行政工作; (2)如果年龄满18岁不满5o 岁,学历本科,不分男女,任中层领导
  10. java nextgaussian(),java.util.Random.nextGaussian()
  11. 面试题:有限制条件的求和
  12. 解决org.hibernate.QueryException illegal attempt to dereference collection 异常错误
  13. 没有IDEA与Eclipse,该怎么学Java?
  14. 浏览器安装Axure原型插件
  15. Docker 2375 端口入侵服务器,部分解决方案
  16. 猜数游戏是一个益智类小游戏,游戏运行产生一个1-100之间的随机数,让玩家重复猜测,直到猜对为止。(扩展条件:如果猜测超出三次提示“游戏失败”)
  17. mysql 章节作业题
  18. HTML正方体滚动特效
  19. 企业小程序开发步骤【教你创建小程序】
  20. Python之print打印

热门文章

  1. linux 查看mysql表结构_新手进阶 查看MySQL表结构命令
  2. 转发和重定向流程详解
  3. java计算余弦相似度
  4. 怎样给边框添加阴影?CSS3属性box-shadow帮你搞定!
  5. 我的第二个imx6ULL应用《QT+485传感器采集》
  6. sina kanyun 安装步骤
  7. 树莓派学习笔记——I2C设备载入和速率设置
  8. 在github上有哪些开源的直播换脸软件
  9. 踩过的坑(1)----关于微信公众号二维码扫一扫推送url会请求两到三次
  10. 无限扩展器dhcp服务器,tplink无线扩展器怎么设置 tplink无线扩展器设置方法