用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
生成的网页,同样会定期刷新:
