在ASP.NET中动态生成图形

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

StockPicker.aspx:

<script language="VB" runat=server>

Sub ChartBtn_Click(Sender as Object, E as EventArgs)

chart.ImageUrl = "ImageGenerator_Vb.aspx?"

chart.Visible = true

For i=0 to Stocks.Items.Count-1

If (Stocks.Items(i).Selected = true) Then

chart.ImageUrl = chart.ImageUrl & "symbols=" & Stocks.Items(i).Value & "&"

End If

Next

End Sub

</script>

<html>

<body>

<form runat=server>

<h1>Scott's Stock Picker</h1>

<asp:checkboxlist id="Stocks" runat=server>

<asp:listitem>MSFT</asp:listitem>

<asp:listitem>SUN</asp:listitem>

</asp:checkboxlist>

<asp:button text="Chart Your Selected Stocks" OnClick="ChartBtn_Click" runat=server/>

<hr>

<asp:Image id="chart" ImageUrl="" Visible=false runat=server/>

</form>

</body>

</html>

ImageGenerator_VB.aspx:

<%@ Page Language="VB" ContentType="image/jpeg" %>

<%@ Import Namespace="System.Drawing" %>

<%@ Import Namespace="System.Drawing.Drawing2D" %>

<%@ Import Namespace="System.Drawing.Imaging" %>

<%@ Import Namespace="ChartGenerator" %>

<%@ OutputCache Duration="10" %>

<script language="VB" runat=server>

Function GetStockDetails(Symbol as String) as ChartLine

Dim myChartLine as new ChartLine

if (symbol = "msft") then

Dim StockValues() as Single = { 60, 110, 120, 180, 185, 190, 240, 290 }

myChartLine.Width = 5

myChartLine.Color = Color.Blue

myChartLine.LineStyle = DashStyle.Solid

myChartLine.Title = "Microsoft Corp. (MSFT)"

myChartLine.Symbol = "MSFT"

myChartLine.Values = StockValues

return myChartLine

elseif (symbol = "sun") then

Dim StockValues() as Single = { 180, 155, 125, 60, 25, 15, 10, 3 }

myChartLine.Width = 5

myChartLine.Color = Color.Red

myChartLine.LineStyle = DashStyle.Dot

myChartLine.Title = "Sun Corp. (Sun)"

myChartLine.Symbol = "Sun"

myChartLine.Values = StockValues

return myChartLine

end if

return nothing

End Function

Sub Page_Load(Sender as Object, E as EventArgs)

' Generate Chart Data For Image....

Dim XAxes() as String = { "9:00AM", "9:30AM", "10:00AM", "11:00AM", "12:00AM", "1:00PM", "1:30PM" }

Dim MyChartData as New ChartData

MyChartData.YTickSize = 20

MyChartData.YMax = 250

MyChartData.YMin = 0

MyChartData.XAxisTitles = XAxes

Dim Symbols() as String = Request.QueryString.GetValues("symbols")

if (Not Symbols = Nothing) then

for i=0 to Symbols.Length-1

Dim stockValue as ChartLine = GetStockDetails(symbols(i).ToLower)

If (stockValue <> nothing) then

myChartData.Lines.Add(stockValue)

End if

Next

end if

' Create In-Memory BitMap of JPEG

Dim MyChartEngine as New ChartEngine

Dim StockBitMap as BitMap = MyChartEngine.DrawChart(600, 400, myChartData)

' Render BitMap Stream Back To Client

StockBitMap.Save(Response.OutputStream, ImageFormat.JPEG)

End Sub

</script>

ChartEngine.cs:

using System.WinForms;

using System.Collections;

using System.Collections.Bases;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;

using System.ComponentModel;

using System;

using System.IO;

namespace ChartGenerator {

//Core Line Data structure

public struct LineData {

public float[] LineValues ;

public string LineTitle ;

public string LineSymbol ;

}

//Line Data plus display style information

public class ChartLine {

private Color

[1] [2] [3] [4] [5] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航