用Chart绘图

本节内容可以参考示例文件"CaseStudy\WebViewer\拦截响应.Table"的窗口"Chart绘图"。

本节的任务和上一节一样,只是改用Chart控件绘制图表。

提示:既然是开发Web应用,自然有大量优秀的图表库可以使用,一样都可以实现自动刷新绘制,而且能响应事件,这里只是提供了另一种可能。

窗口的AfterLoad事件代码基本一样,这里就不贴出来了。


WebViewer的WebResourceRequested事件代码改为:

Dim wv As WebViewer = e.Sender.WebViewer
Dim
url = e.Request.Uri.ToLower()
If
url.StartsWith("custom://chart/") Then '如果 使用我们"胡编"的图片地址
   
Dim chtType = url.Substring("custom://chart/".Length) '获取图片类型
   
If chtType.Contains("?") Then chtType = chtType.Split("?")(0) '去掉
   
Dim chart As New ChartBuilder '定义一个图表变量
    chart.VisualEffect =
True
    chart.ColorGeneration=C1Chart.ColorGeneration.Aspect
   
Dim Series As WinForm.ChartSeries '定义一个图系变量
    chart.SeriesList.Clear()
'清除图表原来的图系
   
Dim imageSize As New Size(400, 300) '图片大小
   
If chtType.StartsWith("pie") Then '饼图
        chart.ChartType = ChartTypeEnum.Pie
       
For i As Integer = 0 To 3
            Series = Chart.SeriesList.Add()
'增加一个图系
            Series.Length = 1
'一个系列只能包括一个值
            Series.Y(0) = 2 + Rand.Next(5)
       
Next
   
ElseIf chtType.StartsWith("bar") Then '柱状图
        chart.ChartType = ChartTypeEnum.Bar
        chart.AxisY.Min = 0
        Series = chart.SeriesList.Add()
'增加一个图系
        Series.Length = 5
'新增图系包括5个数据点
       
For i As Integer = 0 To 4 '指定每个数据点的位置
            Series.X(i) = i
'指定水平坐标
            Series.Y(i) = 2 + Rand.Next(5)
'垂直坐标用随机数生成
       
Next
   
End If
   
'转换为png
   
Dim ms As New MemoryStream()
    chart.SaveImage(ms, ImageFormat.Png, imageSize)
    ms.Position = 0
    e.Response = wv.CoreWebView2.Environment.CreateWebResourceResponse( ms, 200,
"OK", "Content-Type:image/png")
    chart.BaseControl.Dispose()

End
If

生成的网页,同样会定期刷新:

 


本页地址:http://www.foxtable.com/webhelp/topics/6220.htm