Учебная работа. Статья: ASP.NET пример построения круговой диаграммы
Христофоров Юрий
Ниже будет показано, как можно в ASP.NET приложении, используя графические способы GDI+, нарисовать радиальную диаграмму. Это быть может полезно, к примеру, для приятного представления данных.
файл pie.aspx (написан на VB.NET):
<%@ Page Language=»VB» ContentType=»image/jpeg» %>
<%@ Import Namespace=»System.Drawing» %>
<%@ Import Namespace=»System.Drawing.Imaging» %>
<%@ Import Namespace=»System.Drawing.Drawing2D» %>
<%
Response.Clear()
Dim height As Integer = 200
Dim width As Integer = 320
Dim x As Integer
Dim i As Integer
Dim start_angle As Integer
Dim pie_size As Integer
Dim sub_total As Integer
Dim offset As Integer
Dim diameter As Integer
Dim arrData() As Integer = {75, 45, 19, 10, 55} ‘ значения
Dim arrProcent(4) As Integer
Dim total As Integer
Dim arrColor() As Object = {Color.Salmon, Color.SeaGreen, Color.Gold, Color.Maroon, Color.Orchid}
Dim arrTitle() As String = {«Пункт1», «Пункт2», «Пункт3», «Пункт4», «Пункт5»}
Dim rect As Object
sub_total = 0
start_angle = 0
offset = 20
diameter = 170
total = 0
Dim bmp As New Bitmap(width, height, PixelFormat.Format32bppArgb)
Dim g as Graphics = Graphics.FromImage(bmp)
Dim fnt As New Font(«Arial», 8)
Dim sb As New SolidBrush(Color.Blue)
g.Clear(Color.White)
g.SmoothingMode = SmoothingMode.HighQuality
‘ суммазначенийвмассиве
For i = 0 To arrData.GetUpperBound(0)
total = total + arrData(i)
Next
‘ проценты
For i = 0 To arrData.GetUpperBound(0)
arrProcent(i) = Math.Round((arrData(i)/total)*100)
Next
For i = 0 To arrProcent.GetUpperBound(0)
sub_total = sub_total + arrProcent(i)
pie_size = sub_total*360 / 100 — start_angle
g.FillPie(New SolidBrush(arrColor(i)), offset, offset, diameter, diameter, start_angle, pie_size)
start_angle = start_angle + pie_size
rect = New Rectangle(offset + diameter + 10, offset + i*20, 15, 15)
g.FillRectangle(New SolidBrush(arrColor(i)), rect)
g.DrawString(arrTitle(i) & » — [» & arrProcent(i) & «%]», fnt, sb, offset + diameter + 10 + 20, offset + i*20)
Next
bmp.Save(Response.OutputStream, ImageFormat.jpeg)
g.Dispose()
bmp.Dispose()
Response.End()
%>
Итог работы скрипта:
]]>