各位老大,怎么用asp.net画饼状图?

guxingwang 2004-07-03 03:43:27
各位老大,怎么用asp.net画饼状图?
...全文
155 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxboy 2004-07-03
  • 打赏
  • 举报
回复
<%@ Import NameSpace="homepage" %>
<%@ Import NameSpace="System.Drawing" %>
<%@ Import NameSpace="System.Drawing.Imaging" %>
<%@ Import NameSpace="System.Math" %>

<script runat="SERVER">
Dim homepage As usershop
Dim typeid As String
Dim gui_bm As BitMap
Dim gui_gh As Graphics
Dim votename As String
Dim votecount As Integer
Dim showp As Byte
Dim i As Byte

Private Function GetColor(ByVal itemIndex As Integer) As Color

Dim objColor As Color

Select Case itemIndex
Case 0
objColor = Color.Blue
Case 1
objColor = Color.Red
Case 2
objColor = Color.Yellow
Case 3
objColor = Color.Purple
Case 4
objColor = Color.Orange
Case 5
objColor = Color.Brown
Case 6
objColor = Color.Gray
Case 7
objColor = Color.Maroon
Case 8
objColor = Color.Maroon
Case Else
objColor = Color.Beige
End Select
Return objColor
End Function


Sub Page_Unload()
homepage.conn.Close()
homepage.conn.Dispose()
homepage = Nothing
Me.Dispose()
End Sub
</script>

<%
Response.Cache.SetNoStore()

typeid = Request("typeid")
If Not IsNumeric(typeid) Then
Response.Redirect("/")
End If

'读取投票标题
homepage = New usershop
votename = homepage.votename(typeid)
If votename="" Then
homepage.conn.Close
Me.Dispose()
Response.Redirect("/")
else
votename = Replace(Replace(votename,"<b>",""),"</b>","")
End If
homepage.dataread.Close
homepage.objcommand.Dispose()
'投票总数
votecount = homepage.votecount(typeid)

'初始绘图
gui_bm = New BitMap(500,400)
gui_gh = Graphics.FromImage(gui_bm)
gui_gh.Clear(Color.White) '白色背景
gui_gh.CompositingQuality = Drawing.Drawing2D.CompositingQuality.HighQuality
gui_gh.SmoothingMode = Drawing.Drawing2D.SmoothingMode.AntiAlias

showp = (500 - (len(votename)*18))/2
gui_gh.DrawString(votename,New Font("宋体", 14,FontStyle.Bold), Brushes.Red, New PointF(showp, 5))



'创建图例文字。
Dim symbolLeg As PointF = New PointF(335, 80)
Dim descLeg As PointF = New PointF(360, 80)
Call homepage.votedata(typeid) '得到此次投票数据
Do While homepage.dataread.Read()
gui_gh.FillRectangle(New SolidBrush(GetColor(i)), symbolLeg.X, symbolLeg.Y, 20, 10)
gui_gh.DrawRectangle(Pens.Black, symbolLeg.X, symbolLeg.Y, 20, 10)
gui_gh.DrawString(homepage.dataread("name").ToString, New Font("宋体", 9), Brushes.Black, descLeg)
symbolLeg.Y += 20
descLeg.Y += 20
i+=1
Loop
homepage.dataread.Close()
homepage.objcommand.Dispose()

'写入版权信息
gui_gh.DrawString("中国西部经联网 - 网上商城", New Font("宋体", 9), Brushes.Gray, New PointF(320, 360))
gui_gh.DrawString("BUY.CWECN.COM", New Font("Arial", 9), Brushes.Gray, New PointF(320, 380))

symbolLeg = New PointF(335, 296)
descLeg = New PointF(335, 295)
gui_gh.FillRectangle(New SolidBrush(GetColor(9)), symbolLeg.X, symbolLeg.Y, 100, 18)
gui_gh.DrawRectangle(Pens.Black, symbolLeg.X, symbolLeg.Y, 100, 18)
gui_gh.DrawString("共票数: " & votecount, New Font("宋体", 9), Brushes.Black, New PointF(339, 300))



Dim sglCurrentAngle As Single = 0 '角度
Dim sglTotalAngle As Single = 0 '弧度
Dim jd As Single

Call homepage.votedata(typeid) '得到此次投票数据
i = 0
Do While homepage.dataread.Read()
sglCurrentAngle = homepage.dataread("count") / votecount * 360 '得到所占角度大小
'画出填充圆弧。
gui_gh.FillPie(New SolidBrush(GetColor(i)),5, 65, 300, 300, sglTotalAngle, sglCurrentAngle)
'画出圆弧线。
gui_gh.DrawPie(Pens.Black, 5, 65, 300, 300, sglTotalAngle, sglCurrentAngle)
'写入注释
jd = sglCurrentAngle + sglTotalAngle
gui_gh.DrawString("投票:" & homepage.dataread("count"), New Font("宋体", 9), Brushes.Gray, New PointF(155*cos(jd)*-1,215*sin(jd)*-1))
'把当前圆弧角度加到总角度上。
sglTotalAngle += sglCurrentAngle
i += 1
Loop
homepage.dataread.Close()
homepage.objcommand.Dispose()

'保存图片
gui_bm.Save(Response.OutputStream, ImageFormat.Gif)
gui_gh.Flush()
gui_gh.Dispose()
gui_bm.Dispose()
%>
kenwbz 2004-07-03
  • 打赏
  • 举报
回复
有3个方法
1.CRYISTREPORT上有的 你安装了没
2.去网上找免费的CHART控件
3.自己有.NET带的GDI组件画 这个是又累又不好的 我以前用的 你可以自己写组件
孟子E章 2004-07-03
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/ShowDetail.aspx?id=221BC601-1A1B-4E1F-883D-04B043659703
Alexandria 2004-07-03
  • 打赏
  • 举报
回复
Microsoft Reporting Service or Crystal Report or OWC.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧