如何为.net(用于创建.png-images)的微软图表控件创建的图像定义图像分辨率(以DPI为单位)。
图表控件的winforms版本具有Chart.RenderingDpi[X|Y]-属性,但是对于asp.net控件,我找不到这样的属性。
有人可以让我找到解决方案吗?
更新
在搜索解决方案期间,我看到图表控件有一个Paint方法。有了这个,我能够用其他DPI设置创建图像。我不确定这是否是正确的方法,但结果对我来说并不坏。我已经发布了代码作为答案。如果有人有更整洁的解决方案,请告诉我。
答案 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"));