2

如何为 .net 的 microsoft chart 控件创建的图像定义图像分辨率(以 DPI 为单位)(用于创建 .png 图像)。

图表控件的 winforms 版本具有Chart.RenderingDpi[X|Y]-属性,但是对于 asp.net 控件,我找不到这样的属性。

有人可以引导我找到解决方案吗?

更新
在寻找解决方案的过程中,我看到图表控件有一个画图方法。有了这个,我可以用其他 DPI 设置创建图像。我不确定这是否是正确的方法,但结果对我来说似乎还不错。我已经发布了代码作为答案。如果有人有更简洁的解决方案,请告诉我。

4

2 回答 2

5

这是我发现的一个可以产生良好结果的解决方案。

Bitmap bmp = new Bitmap(size.Width, size.Height);
bmp.SetResolution(resX,resY);
using (Graphics g = Graphics.FromImage(bmp)) {
     chart.Paint(g,new Rectangle(new Point(0,0),GetSizeOrDefault(context)));
}
于 2011-07-28T12:49:12.847 回答
0

如果您将问题改写为“如何解决烦人的 jpeg 光栅工件”,我会使用 GetBytes 方法将我的问题输出为 png。然后我使用构造函数来设置高度/宽度。

Chart chart = new Chart(width: 1200, height: 600, theme: ChartTheme.Blue);
...
chart.GetBytes("png");

如果您好奇,我会在 .net MVC 扩展方法中以这种方式使用它,并将 base 64 编码为图像

return "data:image/png;base64," + System.Convert.ToBase64String(chart.GetBytes("png"));
于 2013-02-04T17:57:15.827 回答