当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 用ASP.NET动态生成图像(转2)

ASP.NET
C# Quoted-Printable编码、解码
asp.net Google的translate工具翻译 API
.NET读取所有目录下文件正则匹配文本电子邮件
asp.net 半角全角转化工具
AjaxControlToolKit 显示浏览者本地语言的方法
asp.net HTML文件上传标签
ASP.NET 绑定DataSet中的多个表
ASP.NET 重定向的几种方法小结
Asp.Net 重定向必须要知道的一些资料
ASP.NET 导出到Excel时保留换行的代码
Asp.Net Cache缓存使用代码
document.getElementsByName和document.getElementById 在IE与FF中不同实现
GridView单元格合并
asp.net 大文件上传控件
asp.net 日期函数 某月的第一天和最后一天的日期
asp.net 时间类 一周的周一和周末的日期
C# javaScript函数的相互调用
asp.net membership 密码重设
"虚拟路径"..."映射到另一个应用程序,这是不允许的!
如何传值在2个页面之间 要求不刷新父页面,并且不能用Querystring传值

用ASP.NET动态生成图像(转2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 208 ::
收藏到网摘: n/a

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 lineColor ;
private LineData lineData ;
private DashStyle lineStyle ;
private int lineWidth ;
//Constructors
public ChartLine() :base() {}
public ChartLine(LineData lineData) :base() {
this.lineData = lineData;
}
//Properties
public Color Color {
get { return lineColor ; }
set { lineColor = value ; }
}
public DashStyle LineStyle {
get { return lineStyle ; }
set { lineStyle = value ; }
}

public st