【发布时间】:2011-02-24 04:04:34
【问题描述】:
我想在 96dpi 上运行我的应用程序,无论 Windows 的 dpi 大小设置为多少。有可能吗?
'编辑' 我发现使用 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 应用程序中使用此“技巧”时,主窗体会调整大小,但对于某些其他窗体,则不会应用缩放 + 更改的字体。
【问题讨论】: