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

发布于 2024-11-26 19:04:10 字数 464 浏览 1 评论 0原文

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

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

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

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

How can I define the image resolution (in DPI) for images created by the microsoft chart controls for .net (for the creation of .png-images).

The winforms version of the charting control has the Chart.RenderingDpi[X|Y]- property, however for the asp.net control, I can not find such a property.

Can someone lead me to a solution for doing this?

Update
During searching for a solution, I have seen that the chart-control has a Paint-method. With this I was able to create images with other DPI-settings. I'm not sure if this is the correct way to go, but the result looks not to bad to me. I have posted the code as an answer. If anyone has a more neat solution, please let me know.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜心小果奶 2024-12-03 19:04:10

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

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)));
}

Here a solution I have found that produces good results.

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)));
}
胡渣熟男 2024-12-03 19:04:10

如果您将问题改写为“如何解决烦人的 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"));

If you rephrase your question as "how to get around annoying jpeg raster artifacts" I output mine as a png using the GetBytes method. I then use the constructor to set height/width.

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

if you are curious I use it this way in a .net MVC extension method and base 64 encode into a image

return "data:image/png;base64," + System.Convert.ToBase64String(chart.GetBytes("png"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文