我有一个WinForms应用程序,它将图像带入图片框,我允许用户点击控件,在图像上的那一点添加“图章”。当用户完成时,每个“标记”位置都存储在XML中,以便在应用程序的其他地方使用,其中在预先指定的位置重新绘制标记(以便不改变原始图像)。
现在,我的问题是这些位置是以像素为单位的,最初我注意到某些计算机会以不同于原始计算机的方式显示重绘的“标记”。我做了一些研究,发现DPI设置可以帮助解决这个问题。所以,我已经尝试添加代码来抵消这个问题,但它似乎没有正常工作。以下是我的步骤:
Me.CreateGraphics().DpiX
和Me.CreateGraphics().DpiY
获取当前计算机的DPI。我还抓住了存储在XML文件中的原始计算机图形Point
变量中设置所需的位置:
New Point(Stamp.X * (dpiX / dpoX), Stamp.Y * (dpiY / dpoY))
其中dpi?
是当前计算机,dpo?
是原始计算机我是以正确的方式前进,还是有更简单的方法来解决这个问题?