我目前有一个winform应用程序,它相当重视读取鼠标点击点。这是一个视频应用程序,允许用户点击来自网络摄像头的传入视频,并在其上绘制线条并执行其他操作。这个问题的重要部分是绘制线 - 一个简单的例子是,如果它们点击视频输入上的某个位置,它会立即在鼠标点的整个画面上绘制一条水平线。
这在96dpi上完美无缺,但是当Windows缩放到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持续运行,或者其他一些解决方案使我的应用程序在120 + dpi的情况下正常工作?
谢谢!
答案 0 :(得分:0)
看一下AutoScaleMode财产。这就是你所需要的。
默认情况下AutoScaleMode
通常设置为AutoScaleMode.Font
*.designer.cs
将其更改为AutoScaleMode.None
以进行无缩放,或者AutoScaleMode.Dpi
与AutoScaleDimensions
一起使用}
希望这有帮助
答案 1 :(得分:0)
为了强制您的应用程序以96 DPI运行,请将其写入Form1_Load:
Graphics g = this.CreateGraphics();
if (g.DpiX != 96)
{
MessageBox.Show("Your message.");
this.Close();
}