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

时间:2015-09-19 10:25:32

标签: c# winforms charts

我正在尝试在列上创建一个带有独特标记的简洁小条形图。 我为此目的使用了20x20px png图像并使用

进行设置
chart1.Series[0].Points[chart1.Series[0].Points.Count - 1].MarkerImage = imageIWanToUse;

但标记很大,试图使用

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

但没有运气,我在所有专栏上都有这个,我可以在哪里解决这个问题?

image of a column

1 个答案:

答案 0 :(得分:0)

您需要确保所使用的图像具有正确的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,例如通过测试Graphics事件中的当前Paint对象:Console.WriteLine(e.Graphics.DpiX + " dpi x");对于我的屏幕,这导致了120 dpi ..