来自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文档包含了这个非常有用的警告:"如果您将图表呈现为二进制流,则必须使用特殊技术来实现客户端图像映射。"

我错过了什么?微软显然想要保密的"特殊技术"是什么?

来自c# system . web . ui . datavisvisual.charting . chart助手的图像

事情被很好地隐藏和分散,就像任何Chart的化身一样。

由此引语推断:

图表。IsMapEnabled地产

评论;

设置此属性为false将禁用图像映射。这将即使在下列情况下也会发生:

  • 设置图表元素的Url、MapAreaAttributes、LabelMapAreaAttributes、LegendMapAreaAttributes或ToolTip属性。

  • MapArea对象已添加到MapAreasCollection对象

需要在ChartMapAreas集合中添加一个MapArea

更多提示可以通过Chart.RenderType:

找到

图表。RenderType

备注:

下面的列表描述了图表图像可以使用的三种方式呈现:

ImageTag呈现类型导致将临时文件保存到服务器的磁盘上。控件在客户端显示该图表标记,其SRC属性设置为ImageLocationproperty .

如果指定了BinaryStreaming呈现类型,则服务器上没有临时图像文件。相反,将发送图表图像作为二进制流,并使用带有其SRC的标记显示属性设置为负责生成的另一个.aspx页面图表图像。

ImageMap的呈现类型导致创建图像映射,但不导致显示实际的图表图像。这个选项应该只在使用渲染类型为BinaryStreaming .