贴一个给你看看吧(省略了一些取数据源的代码)。 Imports System.Drawing Imports System.Drawing.Imaging Imports System.Drawing.Graphics Imports System.Data Imports System.Data.SqlClient Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '下面开始画图 Dim bmpW As Integer = 500 '图片宽度 Dim bmpH As Integer = 300 '图片高度 Dim objBmp As New Bitmap(bmpW, bmpH) Dim objGraphics As Graphics Dim blackPen As New Pen(Color.Black, 1) Dim thickPen As New Pen(Color.Black, 2) '临时变量 timesX = (bmpW - 20) / rowCount timesY = (bmpH - 40) / maxValue '从指定的objBitMap对象创建新图形对象objGraphics。 objGraphics = Graphics.FromImage(objBmp) '清除整个绘图面并以指定白色为背景色进行填充。 objGraphics.Clear(Color.White) '画坐标 objGraphics.DrawLine(blackPen, 10, 10, 10, bmpH - 10) objGraphics.DrawLine(blackPen, 10, bmpH - 10, bmpW - 10, bmpH - 10) '画刻度******************************************************************** '共画27个纵刻度(bmpH-30 是实际使用的y轴长度)每10个单位一个刻度 For i = 3 To 29 objGraphics.DrawLine(blackPen, 10, 10 * i, 13, 10 * i) objGraphics.DrawString(System.Convert.ToInt32(maxValue / (bmpH - 30) * (30 - i) * 10), New Font("宋体", 7), New SolidBrush(Color.Black), New PointF(10, 10 * i)) Next '共24个横向刻度 For i = 0 To 23 If i Mod 2 = 0 Then objGraphics.DrawLine(thickPen, 10 + 20 * i, bmpH - 14, 10 + 20 * i, bmpH - 10) Else objGraphics.DrawLine(blackPen, 10 + 20 * i, bmpH - 13, 10 + 20 * i, bmpH - 10) End If Next Dim tempDate As Date For i = 1 To 11 tempDate = beginDate.AddDays(i * endDate.Subtract(beginDate).Days / 12) objGraphics.DrawString(tempDate.Month & "/" & tempDate.Day, New Font("宋体", 8), New SolidBrush(Color.Black), New PointF(40 * i, bmpH - 9)) Next '*************************************************************************** objGraphics.DrawString("日期", New Font("宋体", 8), New SolidBrush(Color.Black), New PointF(bmpW - 35, bmpH - 9)) '画箭头 objGraphics.DrawLine(blackPen, 10, 10, 5, 20) objGraphics.DrawLine(blackPen, 10, 10, 15, 20) objGraphics.DrawLine(blackPen, bmpW - 10, bmpH - 10, bmpW - 15, bmpH - 5) objGraphics.DrawLine(blackPen, bmpW - 10, bmpH - 10, bmpW - 15, bmpH - 15) Dim ptArray(10000) As PointF For j = 0 To strFields.Length - 1 For i = 0 To rowCount - 1 '定义绘图曲线的所有点坐标 ptArray(i) = New PointF(10 + i * timesX, bmpH - 10 - ds.Tables(0).Rows(i).Item(j) * timesY) Next For i = 0 To rowCount - 2 objGraphics.DrawLine(New Pen(GetColor(j)), ptArray(i), ptArray(i + 1)) Next objGraphics.DrawString(strFields(j), New Font("宋体", 10), New SolidBrush(GetColor(j)), New PointF(30, 20 * (j + 1))) Next objGraphics.DrawString(maxValue, New Font("宋体", 10), New SolidBrush(GetColor(j)), 0, 0) objBmp.Save(Response.OutputStream, ImageFormat.Gif) End Sub
http://www.asp.net/ControlGallery/ControlDetail.aspx?Control=1802&tabindex=2
似乎要钱
如果需要的话可以发给你一个试试
如果需要源码,请和我联系
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Graphics
Imports System.Data
Imports System.Data.SqlClient
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'下面开始画图
Dim bmpW As Integer = 500 '图片宽度
Dim bmpH As Integer = 300 '图片高度 Dim objBmp As New Bitmap(bmpW, bmpH)
Dim objGraphics As Graphics Dim blackPen As New Pen(Color.Black, 1)
Dim thickPen As New Pen(Color.Black, 2) '临时变量 timesX = (bmpW - 20) / rowCount
timesY = (bmpH - 40) / maxValue
'从指定的objBitMap对象创建新图形对象objGraphics。
objGraphics = Graphics.FromImage(objBmp)
'清除整个绘图面并以指定白色为背景色进行填充。
objGraphics.Clear(Color.White)
'画坐标
objGraphics.DrawLine(blackPen, 10, 10, 10, bmpH - 10)
objGraphics.DrawLine(blackPen, 10, bmpH - 10, bmpW - 10, bmpH - 10) '画刻度********************************************************************
'共画27个纵刻度(bmpH-30 是实际使用的y轴长度)每10个单位一个刻度
For i = 3 To 29
objGraphics.DrawLine(blackPen, 10, 10 * i, 13, 10 * i)
objGraphics.DrawString(System.Convert.ToInt32(maxValue / (bmpH - 30) * (30 - i) * 10), New Font("宋体", 7), New SolidBrush(Color.Black), New PointF(10, 10 * i))
Next
'共24个横向刻度
For i = 0 To 23
If i Mod 2 = 0 Then
objGraphics.DrawLine(thickPen, 10 + 20 * i, bmpH - 14, 10 + 20 * i, bmpH - 10)
Else
objGraphics.DrawLine(blackPen, 10 + 20 * i, bmpH - 13, 10 + 20 * i, bmpH - 10)
End If Next
Dim tempDate As Date For i = 1 To 11
tempDate = beginDate.AddDays(i * endDate.Subtract(beginDate).Days / 12)
objGraphics.DrawString(tempDate.Month & "/" & tempDate.Day, New Font("宋体", 8), New SolidBrush(Color.Black), New PointF(40 * i, bmpH - 9))
Next
'***************************************************************************
objGraphics.DrawString("日期", New Font("宋体", 8), New SolidBrush(Color.Black), New PointF(bmpW - 35, bmpH - 9)) '画箭头
objGraphics.DrawLine(blackPen, 10, 10, 5, 20)
objGraphics.DrawLine(blackPen, 10, 10, 15, 20)
objGraphics.DrawLine(blackPen, bmpW - 10, bmpH - 10, bmpW - 15, bmpH - 5)
objGraphics.DrawLine(blackPen, bmpW - 10, bmpH - 10, bmpW - 15, bmpH - 15) Dim ptArray(10000) As PointF For j = 0 To strFields.Length - 1
For i = 0 To rowCount - 1
'定义绘图曲线的所有点坐标
ptArray(i) = New PointF(10 + i * timesX, bmpH - 10 - ds.Tables(0).Rows(i).Item(j) * timesY)
Next For i = 0 To rowCount - 2 objGraphics.DrawLine(New Pen(GetColor(j)), ptArray(i), ptArray(i + 1)) Next
objGraphics.DrawString(strFields(j), New Font("宋体", 10), New SolidBrush(GetColor(j)), New PointF(30, 20 * (j + 1)))
Next
objGraphics.DrawString(maxValue, New Font("宋体", 10), New SolidBrush(GetColor(j)), 0, 0) objBmp.Save(Response.OutputStream, ImageFormat.Gif)
End Sub