利用System.Drawing画线状图,柱状图和饼图.

以前实现图表的时候,采用的是OWC,方法如下:

OWC11下载网址
http://www.microsoft.com/downloads/details.aspx?familyid=7287252C-402E-4F72-97A5-E0FD290D4B76&displaylang=zh-cn
使用教程
http://blog.youkuaiyun.com/Eray/archive/2007/03/20/1534509.aspx

如果对图表要求较复杂,最好还是用OWC来实现,而本例是采用一个.vb文件来实现简单的线、柱、饼状图的实现。这个例子的想法来源于另一个例子,利用System.Drawing制作登陆验证码,本例是将其扩展之后形成的功能:
http://blog.youkuaiyun.com/Eray/archive/2007/12/14/1937421.aspx

另外声明:MSDN中对System.Drawing的警告如下:


不知道MS这是什么意思,但在写类,测试中还没有发现什么问题。这个问题可能真的如MS所说是意想不到……先不管,实现再说。

好,言归正传,先看截图(数据为手动添加):



代码较多,建议下载源码查看,源码下载地址

源码如下:
调用ASPX页面

 

<% @ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default"  %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title > mainPage </ title >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
        
< asp:Image  ID ="Image1"  runat ="server"   />
        
< br  />
        长
< asp:TextBox  ID ="TextBox1"  runat ="server"  Width ="80px" > 400 </ asp:TextBox >
        
< asp:TextBox  ID ="TextBox2"  runat ="server"  Width ="72px" > 300 </ asp:TextBox > &nbsp;
        
< asp:DropDownList  ID ="DropDownList1"  runat ="server" >
            
< asp:ListItem  Value ="0" > 线状图 </ asp:ListItem >
            
< asp:ListItem  Value ="1" > 柱状图 </ asp:ListItem >
            
< asp:ListItem  Value ="2" > 饼状图 </ asp:ListItem >
        
</ asp:DropDownList >
        
< asp:Button  ID ="Button1"  runat ="server"  Text ="生成"   />
        
            
</ form >
</ body >
</ html >


ASPX.vb

Partial   Class _Default

    
Inherits System.Web.UI.Page
    
Dim ec As New ErayChart

    
Protected Sub Button1_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles Button1.Click
        
If TextBox1.Text.Trim <> "" And TextBox1.Text.Trim <> "" Then
            
'手动添加值
            Dim lis As New ArrayList
            
Dim li As ListItem
            li 
= New ListItem
            li.Value 
= "200"
            li.Text 
= "1"
            lis.Add(li)

            li 
= New ListItem
            li.Value 
= "387"
            li.Text 
= "2"
            lis.Add(li)

            li 
= New ListItem
            li.Value 
= "925"
            li.Text 
= "3"
            lis.Add(li)

            li 
= New ListItem
            li.Value 
= "600"
            li.Text 
= "4"
            lis.Add(li)

            li 
= New ListItem
            li.Value 
= "200"
            li.Text 
= "5"
            lis.Add(li)

            li 
= New ListItem
            li.Value 
= "300"
            li.Text 
= "6"
            lis.Add(li)

            ec.Width 
= CInt(TextBox1.Text)
            ec.Height 
= CInt(TextBox2.Text)
            ec.Values() 
= lis
            ec.type 
= DropDownList1.SelectedValue
        
End If
        Image1.ImageUrl 
= ec.GetImageurl
    
End Sub

End Class


ErayChart.vb
' -------------------------------------------------------------------------------------------------------------------------
'
名称:ErayChart
'
功能:简单图表类
'
时间:2008年2月1日
'
作者:Eray
'
历史:2008年2月1日建类
'
-------------------------------------------------------------------------------------------------------------------------
Imports  System.IO
Imports  system.Drawing
Imports  System.Drawing.Imaging
Imports  System.Drawing.Drawing2D

Public   Class ErayChart
    
Private gwidth As Integer = 400 '默认宽
    Private gheight As Integer = 300 '默认高
    Private gtype As Integer = 0 '默认为线状图,1为柱状图,2为饼状图
    Private backGroundColor As Color = Color.Brown    '默认背景颜色为绿色
    Private lineColor As Color = Color.White '线的颜色
    Private Fontcolor As Color = Color.Black '文字颜色
    Private gvalues As ArrayList '默认没有值
    Private gfont As New Font("arial"10, FontStyle.Regular, GraphicsUnit.Pixel) '默认字体
    Private gfont2 As New Font("arial"5, FontStyle.Regular, GraphicsUnit.Pixel) '默认字体
    Private RecPercent As Single = 0.8 '柱占90%,即0.9,柱状图专用
    Private cor() As Color = {Color.DarkOrchid, Color.DarkSalmon, Color.DarkKhaki, Color.DarkOliveGreen, Color.DarkSlateBlue, Color.DarkOrange, Color.BlueViolet, Color.BlueViolet, Color.BlueViolet, Color.BlueViolet, Color.BlueViolet, Color.BlueViolet}

属性的访问
构造
对外函数

End Class

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值