强制Winform程序以96dpi运行
本文关键字:96dpi 运行 程序 Winform 强制 | 更新日期: 2023-09-27 18:25:19
我目前有一个winform应用程序,它相对严重依赖于读取鼠标点击点。这是一个视频应用程序,允许用户点击来自网络摄像头的传入视频源,在上面划线并做其他事情。这个问题的重要部分是画线——一个简单的例子是,如果他们点击视频源上的某个地方,它会在鼠标点上立即在整个图片上画一条水平线。
这在96dpi上可以完美地工作,但当窗口缩放到125%缩放(控制面板''所有控制面板项目''显示->中等-125%),将其缩放到120 dpi时,一切都会发生变化。突然,应用程序读取到鼠标被点击的位置比实际位置要远得多
我所做的只是在鼠标点击时拖动鼠标的确切位置。它就像一样简单
using (Graphics g = Graphics.FromImage(tmpImage))
{
g.DrawLine(new Pen(lineColor, lineWidth),
new Point(0, e.Location.X), new Point(tmpImage.Width,
e.Location.Y));
}
在96dpi中,它精确地在鼠标上绘制。在120dpi时,它在鼠标以南绘制了相当多的图形。这对我来说是个大问题。
有没有什么方法可以让我的应用程序始终以96dpi运行,或者其他一些解决方案可以让应用程序在120dpi以上的情况下正常工作?
谢谢!
为了强制应用程序以96 DPI运行,请将其写入Form1_Load:
Graphics g = this.CreateGraphics();
if (g.DpiX != 96)
{
MessageBox.Show("Your message.");
this.Close();
}
查看AutoScaleMode属性。这正是你所需要的。
默认情况下,AutoScaleMode
设置为AutoScaleMode.Font
,通常在*.designer.cs
中将其更改为AutoScaleMode.None
以不进行缩放,或者您可以将AutoScaleMode.Dpi
与AutoScaleDimensions
一起使用
希望这能帮助