Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调整c#标记图像的大小?_C#_Winforms_Charts - Fatal编程技术网

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

如何调整c#标记图像的大小?,c#,winforms,charts,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; 但是运气不好,我在所有的专栏上

我试图制作一个整洁的小条形图,在列上有独特的标记。 为此,我使用了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;
但是运气不好,我在所有的专栏上都看到了这个,我在哪里可以解决这个问题


您需要确保使用的图像具有正确的
dpi
设置,以便与屏幕的dp相匹配,dpi可能在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";
以下是生成的标记:

最初的决议是96dpi。(左标记。)


您必须注意不同的屏幕
dpi
,使用不同的图像或动态创建正确的图像。您可以获取当前屏幕
dpi
,例如,通过在
Paint
事件中测试当前
Graphics
对象:
Console.WriteLine(e.Graphics.DpiX+“dpi x”)对于我的屏幕,这导致了120 dpi。

我使用20x20px图像作为标记,但它显示为50x50px图像,20x20px图像(根据inkscape)为35.29dpi。确切地显示器的dpi可能在75-120 dpi左右。所以它看起来太大了,就像我写的。。尝试用75或96 dpi保存它!-您必须注意不同的屏幕dpi,使用不同的图像或动态创建正确的图像。您可以获得当前屏幕dpi,例如,通过在
Paint
事件中测试当前图形对象:
Console.WriteLine(e.Graphics.DpiX+“dpi x”)对于我的屏幕,这导致了120 dpi..仍然获得相同的大小第一个图像是50 dpi,第二个是250 dpi,第三个是原始图像35,29 dpi。但是,是dpi让图像变得太大了,我试图进一步搜索,我发现了谢谢你的帮助。