强制Winform程序以96dpi运行?

时间:2013-07-29 19:26:43

标签: c# winforms mouseevent dpi

我目前有一个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的情况下正常工作?

谢谢!

2 个答案:

答案 0 :(得分:0)

看一下AutoScaleMode财产。这就是你所需要的。

默认情况下AutoScaleMode通常设置为AutoScaleMode.Font *.designer.cs将其更改为AutoScaleMode.None以进行无缩放,或者AutoScaleMode.DpiAutoScaleDimensions一起使用}

希望这有帮助

答案 1 :(得分:0)

为了强制您的应用程序以96 DPI运行,请将其写入Form1_Load:

        Graphics g = this.CreateGraphics();
        if (g.DpiX != 96)
        {
            MessageBox.Show("Your message.");
            this.Close();
        }