如何在asp.net中为Microsoft Chart Control生成的图像设置分辨率(DPI)

时间:2011-07-28 12:29:38

标签: .net system.drawing microsoft-chart-controls

如何为.net(用于创建.png-images)的微软图表控件创建的图像定义图像分辨率(以DPI为单位)。

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

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

更新
在搜索解决方案期间,我看到图表控件有一个Paint方法。有了这个,我能够用其他DPI设置创建图像。我不确定这是否是正确的方法,但结果对我来说并不坏。我已经发布了代码作为答案。如果有人有更整洁的解决方案,请告诉我。

2 个答案:

答案 0 :(得分: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)));
}

答案 1 :(得分: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"));