2008-08-30 13 views
4

Gibt es eine einfache Möglichkeit zum Festlegen der Zoomstufe für ein Windows-Formular in C#? In VBA gab es eine Zoom-Eigenschaft des Formulars.Zoom für ein Windows-Formular in C#

+0

Können Sie angeben, welche Art von Formular? Sprechen wir über Webformulare und Textcodierungsgrößen? –

Antwort

0

Es gibt keine Möglichkeit (dass ich weiß), was Sie mit typischen WinForms fragen.

Wenn Sie benutzerdefinierte malen/zeichnen, können Sie zoomen, indem Sie eine Zoom-Transformation, aber soweit ich weiß, gibt es keine "Zoom" -Eigenschaft für das Formular in der gesamten Welt von .NET und nativen Windows/C++ APIs kombiniert.

Sie könnten wahrscheinlich selbst etwas so einrichten, dass Sie die Steuerelemente um einen konstanten Faktor skalieren. Und Sie können wahrscheinlich Steuerelemente/Oberflächen von Drittanbietern finden, die dies unterstützen. Und wer weiß, was mit WPF möglich ist. Aber in einer typischen WinForms-Welt, nein.

+0

Hier ist die Methode: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.scale.aspx. Natürlich sollten Sie die ursprüngliche Größe der Steuerelemente im Auge behalten, da nach skalierten Steuerelementen deren skalierter Wert einem ganzzahligen Wert angenähert wird (so kann ein sukzessiver Zoom-In-Out-Vorgang zu falschen Originalgrößen führen). – Luca

+0

zu schlecht diese Antwort wurde als richtig markiert, da der von Fabrizio arbeitete – Chopchop

+0

@ChopChop In Fairness, ich habe gesagt "Sie könnten wahrscheinlich etwas selbst riggen, so dass Sie Kontrollen um einen konstanten Faktor skalieren". In der ursprünglichen Frage wurde gefragt, ob es einen EINFACHEN Weg (ähnlich dem Zoom-Level in VB-Form) gab, um ein Formular in C#/WinForms zu skalieren, anstatt die DIY-Route zu gehen. –

8

Ich hatte das gleiche Problem und ich löste es so in C#. Der Code geht weiter Formular laden

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); 

Diese "mehr oder weniger" Skalen bilden und alle Kinder. Loops für immer in 800x600 Sie haben folgende Formular Eigenschaften festlegen (?):

AutoscaleMode = Font 
AutoSize = False 
2

Sie irgendeine Art von Zoom durch die Zuordnung verschiedener Font auf die Form bekommen, alle Kontrollen werden entsprechend, wenn gezoomt werden AutoScaleMode auf Schriftart festgelegt. Auch Einstellungen AutoSize zu False behält Formulargröße intakt, die Steuerelemente werden in der Mitte des Formulars wachsen. Sie müssen alle Anker richtig einrichten und das Aussehen testen, da es nur "Art von Zoom" ist.

Also hier ist im Grunde Probe Konstruktor:

public Form1() 
{ 
    InitializeComponent(); 

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

Nach Form neue Schriftart wird vermasseln alle Steuerelemente zuweisen Gezeigte und dieser Trick funktioniert nicht.