c# - 如何调整 c# 标记图像的大小?

标签 c# winforms charts

我正在尝试制作一个整洁的小条形图,在列上带有独特的标记。 为此,我使用了一个 20x20px 的 png 图像,并将其设置为

chart1.Series[0].Points[chart1.Series[0].Points.Count - 1].MarkerImage = imageIWanToUse;

但是marker很大,试过了

chart1.Series[0].Points[chart1.Series[0].Points.Count - 1].MarkerSize = 1;

但运气不好,我在所有列上都遇到了这个问题,我可以在哪里解决这个问题?

image of a column

最佳答案

您需要确保您使用的图像具有正确的 dpi 设置,以便它适合您屏幕的 dp,大概在 75-96 dpi 左右。

如果它看起来太大而不是图像的 dpi 太小..

您可以像这样在代码中更改它:

Bitmap bmp = (Bitmap) Bitmap.FromFile("D:\\stop32.png");
bmp.SetResolution(50, 50);
bmp.Save("D:\\stop32_50dpi.png");
bmp.SetResolution(250, 250);
bmp.Save("D:\\stop32_250dpi.png");

Series S0 = chart1.Series[0];

S0.Points[chart1.Series[0].Points.Count - 3].MarkerImage = "D:\\stop32.png";
S0.Points[chart1.Series[0].Points.Count - 2].MarkerImage = "D:\\stop32_50.png";
S0.Points[chart1.Series[0].Points.Count - 1].MarkerImage = "D:\\stop32_250.png";

这是生成的标记:

enter image description here

原始分辨率为 96dpi。 (左标记。)

您必须注意不同的屏幕 dpi 并使用不同的图像或动态创建正确的图像。您可以获得当前屏幕 dpi 例如通过在 Paint 事件中测试当前的 Graphics 对象:Console.WriteLine(e.Graphics.DpiX + "dpi x"); 对于我的屏幕结果为 120 dpi..

关于c# - 如何调整 c# 标记图像的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32667095/

相关文章:

c# - Web API 表单数据收集

c# - 停止 SoundPlayer 播放

c# - ListViewItem 的组未通过另一个集合保留

javascript - Google Visualization API - 保存和检索 ChartWrapper 对象

javascript - 使用 Google Charts API 显示两个图表

c# - 正则表达式与 C# 中的预期不匹配

c# - 如何加载独立于 site.master 的 View ?

c# - 检测 VisibleChanged 是真还是假

ios - 如何减少长按持续时间以显示 Shinobi iOS SDK 的十字准线?

c# - 使用进程间同步对象同步 2 个进程 - Mutex 或 AutoResetEvent