来自c# system . web . ui . datavisvisual.charting . chart助手的图像
本文关键字:chart 图像 charting datavisvisual system web ui 来自 | 更新日期: 2023-09-27 18:17:38
我试图在我的web应用程序中创建一个饼状图,允许用户交互(悬停,点击)。使用图表助手的web表单版本可以很好地呈现饼状图。但是图像映射总是空的:
List<string> items = new List<string>(new string[] {"what", "is", "wrong"});
List<decimal> values = new List<decimal>(new decimal[] { 1, 2, 3 });
Chart myChart = new Chart();
myChart.ChartAreas.Add(new ChartArea());
myChart.Series.Add(new Series("Data") { ChartType = SeriesChartType.Pie });
myChart.Series["Data"].Points.DataBindXY(items, values);
using (MemoryStream stream = new MemoryStream())
{
myChart.SaveImage(stream, ChartImageFormat.Jpeg);
string result = "<img usemap='#myMap' src='" + String.Format("data:image/jpeg;base64,{0}", Convert.ToBase64String(stream.ToArray())) + "' />";
return result + myChart.GetHtmlImageMap("myMap");
}
生成的图像映射:
<map name="myMap" id="myMap">
<area shape="rect" coords="0,0,0,0" alt="">
</map>
MS文档包含了这个非常有用的警告:"如果您将图表呈现为二进制流,则必须使用特殊技术来实现客户端图像映射。"
我错过了什么?微软显然想要保密的"特殊技术"是什么?
事情被很好地隐藏和分散,就像任何Chart
的化身一样。
由此引语推断:
图表。IsMapEnabled地产
评论;
设置此属性为false将禁用图像映射。这将即使在下列情况下也会发生:
设置图表元素的Url、MapAreaAttributes、LabelMapAreaAttributes、LegendMapAreaAttributes或ToolTip属性。
MapArea对象已添加到MapAreasCollection对象
需要在Chart
的MapAreas
集合中添加一个MapArea
。
更多提示可以通过Chart.RenderType
:
图表。RenderType
备注:
下面的列表描述了图表图像可以使用的三种方式呈现:
ImageTag呈现类型导致将临时文件保存到服务器的磁盘上。控件在客户端显示该图表标记,其SRC属性设置为ImageLocationproperty .
如果指定了BinaryStreaming呈现类型,则服务器上没有临时图像文件。相反,将发送图表图像作为二进制流,并使用带有其SRC的标记显示属性设置为负责生成的另一个.aspx页面图表图像。
ImageMap的呈现类型导致创建图像映射,但不导致显示实际的图表图像。这个选项应该只在使用渲染类型为BinaryStreaming .