我正在尝试在列上制作带有唯一标记的整洁的小条形图。
我为此使用了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

最佳答案

您需要确保所使用的图像具有正确的dpi设置,以使其适合屏幕的dp,该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";


以下是产生的标记:

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

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

您将需要注意屏幕dpi的变化,并使用不同的图像或动态创建合适的图像。您可以获取当前屏幕dpi,例如通过在Graphics事件中测试当前的Paint对象:Console.WriteLine(e.Graphics.DpiX + " dpi x");对于我的屏幕,这导致120 dpi。

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

10-17 01:46