如何调整c#标记图像的大小?
我试图制作一个整洁的小条形图,在列上有独特的标记。 为此,我使用了20x20px png图像,并将其设置为如何调整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; 但是运气不好,我在所有的专栏上
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让图像变得太大了,我试图进一步搜索,我发现了谢谢你的帮助。