2008-08-30 10 views
4

Existe-t-il un moyen facile de définir le niveau de zoom pour un formulaire Windows en C#? Dans VBA il y avait une propriété zoom du formulaire.Zoom pour un formulaire Windows en C#

+0

Pouvez-vous spécifier quel type de formulaire? Parlons-nous des formulaires Web et des tailles d'encodage de texte? –

Répondre

0

Il n'y a aucun moyen (que je sache) de faire ce que vous demandez avec WinForms typique. Si vous faites du dessin/dessin personnalisé, vous pouvez zoomer en utilisant une transformation de zoom, mais pour autant que je sache, il n'y a pas de propriété "Zoom" pour le formulaire dans le monde entier de .NET et Windows natif/API C++ combinées.

Vous pourriez probablement gréer quelque chose vous-même de telle sorte que vous ajustez les contrôles par un facteur constant. Et vous pouvez probablement trouver des contrôles/surfaces tiers qui supportent cela. Et qui sait ce qui est possible avec WPF. Mais dans un monde typique WinForms, non.

+0

Voici la méthode: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.scale.aspx. Bien sûr, vous devez garder une trace de la taille des contrôles d'origine car après avoir mis à l'échelle les contrôles, leur valeur mise à l'échelle est approchée d'une valeur entière (ainsi, l'opération de zoom avant peut entraîner des tailles d'originaux incorrectes). – Luca

+0

Dommage que cette réponse ait été marquée comme correcte puisque celle de Fabrizio a fonctionné – Chopchop

+0

@ChopChop En toute justice, j'ai dit "Vous pourriez probablement truquer quelque chose vous-même de sorte que vous ajustez les contrôles par un facteur constant". La question initiale a demandé s'il y avait une manière EASY (semblable au niveau de Zoom sur le formulaire VB) pour mettre à l'échelle un formulaire dans C#/WinForms par rapport à la route de bricolage. –

8

J'ai eu le même problème et je l'ai résolu de cette façon en C#. Code en cours de chargement Formulaire de charge

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

Cette échelle "plus ou moins" forme tous les enfants. Boucles pour toujours en 800x600 Vous devez définir les propriétés de formulaire ci-dessous (?):

AutoscaleMode = Font 
AutoSize = False 
2

Vous pouvez obtenir une sorte de zoom en attribuant des police au formulaire, tous les contrôles seront zoomées en conséquence si AutoScaleMode défini sur Police. En outre, les paramètres AutoSize sur Faux conservent la taille du formulaire, les contrôles atteignent le centre du formulaire. Vous devez configurer correctement toutes les ancres et tester le look, car c'est juste un "type de zoom".

Donc, fondamentalement, voici constructeur exemple:

public Form1() 
{ 
    InitializeComponent(); 

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

Après formulaire a été montré l'attribution nouveau mess volonté de police toutes les commandes et cette astuce ne fonctionnera pas.

Questions connexes