asp.net|資料|統計|圖形 在使用Excel處理報表時候,往往要利用系統帶的圖表工具產生比例示意圖,不僅直觀,又顯專業。當然,在Web應用程式中,也可以使用Office Web Components 功能,但是卻很複雜。在.NET架構下,通過簡單的編程,就可以輕鬆地做出地道的比例示意圖。在使用GDI+作圖的時候,除了要熟練應用.NET提供的類外,還要從整體上把握圖形產生的座標。在GDI+裡,最左上方的座標為(0,0),最右下角的做標值最大。
本節我們將通過GID+繪製圖形。便於執行個體類比,我們採用數組資料來類比公司業務資料。
建立一個Web表單,命名為GDI_Sample2.aspx,邏輯代碼如下:
'-----code begin-----
Imports System.Drawing
Imports System.Drawing.Bitmap
Imports System.Drawing.Graphics
Imports System.Drawing.Imaging
Public Class GDI_Sample4
Inherits System.Web.UI.Page
#Region " Web Form設計器產生的程式碼 "
'此處省略表單設計器產生的程式碼
#End Region
'定義公用陣列變數,用來存放類比公司銷售額資料
Public data(5, 1) As String
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此處放置初始化頁的使用者代碼
Dim i As Int16
Dim objbitmap As Bitmap
objbitmap = New Bitmap(400, 300)
'聲明Graphics對象
Dim objGraphics As Graphics
'指定畫布
objGraphics = Graphics.FromImage(objbitmap)
'設定背景色為白色
objGraphics.Clear(Color.White)
'畫出圖形邊框,注意留出劃線的空間,為一個象素
objGraphics.DrawRectangle(Pens.Black, 1, 1, 398, 298)
'產生表頭文字
objGraphics.DrawString("本公司上半年營業額統計圖", New Font("宋體", 16, FontStyle.Bold), Brushes.Black, New PointF(60, 5))
'擷取類比資料
getdata()
Dim monthcolor As PointF = New PointF(260, 40)
Dim fontinfor As PointF = New PointF(285, 36)
'畫出示意顏色圖例
For i = 0 To 5
'畫出填充矩形。
objGraphics.FillRectangle(New SolidBrush(getcolor(i)), monthcolor.X, monthcolor.Y, 20, 10)
'畫出矩形邊框。
objGraphics.DrawRectangle(Pens.Black, monthcolor.X, monthcolor.Y, 20, 10)
'畫出圖例解說文字--data(i, 0)
objGraphics.DrawString(data(i, 0), New Font("宋體", 10), Brushes.Black, fontinfor)
'移動座標位置,只移動Y方向的值即可。
monthcolor.Y += 15
fontinfor.Y += 15
Next i
'遍曆資料來源的每一項資料,並根據資料的大小畫出矩形圖(即直條圖的柱)。
For i = 0 To 5
'畫出填充矩形。
objGraphics.FillRectangle(New SolidBrush(getcolor(i)), (i * 25) + 35, 270 - CInt(data(i, 1)), 15, CInt(data(i, 1)))
'畫出矩形邊框線。
objGraphics.DrawRectangle(Pens.Black, (i * 25) + 35, 270 - CInt(data(i, 1)), 15, CInt(data(i, 1)))
Next
'畫出示意座標
objGraphics.DrawLine(New Pen(Color.Blue, 1), 10, 0, 10, 320)
objGraphics.DrawLine(New Pen(Color.Blue, 1), 10, 270, 200, 270)
'在示意座標上添加數值標誌,注意座標的計算
For i = 0 To 5
objGraphics.DrawLine(New Pen(Color.Blue, 1), 10, i * 50 + 20, 20, i * 50 + 20)
objGraphics.DrawString((250 - i * 50).ToString, New Font("宋體", 10), Brushes.Black, 12, i * 50 + 8)
Next
' 統計總銷售額
Dim scount As Integer
For i = 0 To 5
scount += CInt(data(i, 1))
Next
'定義畫出扇形角度變數
Dim scg As Single = 0
Dim stg As Single = 0
For i = 0 To 5
'計算當前角度值:當月銷售額 / 總銷售額 * 360,得到餅圖中當月所佔的角度大小。
scg = CInt(data(i, 1)) / scount * 360
[1] [2] 下一頁