8

有没有一种简单的方法可以在 C# 中设置 Windows 窗体的缩放级别?在 VBA 中有表单的缩放属性。

4

3 回答 3

13

我遇到了同样的问题,我在 c# 中以这种方式解决了它。代码继续表单加载

float scaleX = ((float)Screen.PrimaryScreen.WorkingArea.Width / 1024);
float scaleY = ((float)Screen.PrimaryScreen.WorkingArea.Height / 768);
SizeF aSf = new SizeF(scaleX, scaleY);
this.Scale(aSf);

这种“或多或少”的规模形式和所有的孩子。在 800x600 中永远循环(?)您必须设置以下表单属性:

AutoscaleMode = Font
AutoSize = False
于 2008-11-17T16:25:37.430 回答
2

您可以通过为 Form 分配不同的Font来获得某种缩放,如果AutoScaleMode设置为 Font ,则所有控件都将相应地缩放。此外,将AutoSize设置为 False 将保持表单大小不变,控件将增长到表单的中心。您需要正确设置所有锚点并测试外观,因为它只是“一种缩放”。

所以基本上这里是示例构造函数:

public Form1()
{
    InitializeComponent();

    AutoSize = false;
    AutoScaleMode = AutoScaleMode.Font;
    Font = new Font("Trebuchet MS", 
        10.0f, 
        FontStyle.Regular, 
        GraphicsUnit.Point, 
        ((byte)(204))
    );
}

显示表单后分配新字体会弄乱所有控件,这个技巧将不起作用。

于 2013-06-14T12:18:11.583 回答
0

没有办法(据我所知)用典型的 WinForms 做你要求的事情。

如果您正在进行自定义绘画/绘图,则可以使用缩放变换来缩放它,但据我所知,在整个 .NET 世界和本机 Windows/C++ API 组合中,表单没有“缩放”属性.

您可能可以自己装配一些东西,以便按一个常数因子缩放控件。您可能会找到支持此功能的第 3 方控件/界面。谁知道 WPF 有什么可能。但在典型的 WinForms 世界中,没有。

于 2008-08-30T03:55:38.413 回答