我想在96dpi上运行我的应用程序,无论 Windows 的 dpi 大小设置为多少。有可能的 ?
' Edit ' 我发现使用 Scale() 方法并调整字体大小几乎可以解决问题。
public class MyForm : Form
{
private static bool ScaleDetected = false;
const float DPI = 80F;
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (!ScaleDetected)
{
Graphics g = e.Graphics;
float factorX = DPI / g.DpiX;
float factorY = DPI / g.DpiY;
SizeF newSize = new SizeF(factorX, factorY);
AutoScaleDimensions = newSize;
AutoScaleMode = AutoScaleMode.Dpi;
Scale(newSize);
Font = new Font(Font.FontFamily, Font.Size * factorX);
ScaleDetected = true;
}
}
}
然而,当在使用 Janus Controls 的 MDI 应用程序中使用此“技巧”时,主窗体会调整大小,但对于某些其他窗体,不会应用缩放 + 更改的字体。