2009-09-09 10 views
4

Lorsque vous créez un formulaire dans .Net, il apparaît sous la forme d'une boîte de dialogue en mode portrait. Personne n'aime normalement lire sur le côté, ou à l'envers, mais j'ai une raison très valable de faire pivoter la forme.Rotation de formulaire Windows

Quelqu'un sait comment le faire sur Windows Vista avec C#?

+5

Peut-être pourriez-vous élaborer sur votre besoin spécial d'avoir cette rotation. Ne pas dire qu'il va résoudre vos problèmes, mais notre logiciel fonctionne sur des tablettes et toutes les tablettes gérer la rotation de l'écran via les pilotes de la carte vidéo. Je veux juste m'assurer que vous ne réinventez pas la roue –

+0

Merci. J'ai une application similaire à la tablette PC mais sur un PC Vista (pas une tablette). Oui, ce serait une alternative raisonnable pour faire pivoter l'écran.Je ne sais pas comment le faire en .NET, C#, Vista. La plupart des rotations d'écran que j'ai vues sont supportées par WinCe, etc. –

Répondre

2

Faut-il utiliser WinForms? C'est très facile à faire dans WPF, en utilisant des transformations de rotation. Malheureusement, l'intégration de WindowsFormsHost avec WPF n'autorise pas les transformations de rotation.

EDIT

Je comprends, maintenant, que la forme en question est hors du contrôle de l'affiche. L'écriture du contrôle dans WPF ne résoudra pas le problème.

+0

WPF fera pivoter le formulaire entier, y compris la barre de titre et les contrôles de fenêtres et ainsi de suite? – MusiGenesis

+0

merci beaucoup. Pour clarifier les choses, j'ai un programme tiers que je démarre à partir d'un projet WPF comme un nouveau processus. Je n'ai aucun contrôle sur la façon dont le programme tiers a été conçu. J'interagis avec les simulations de souris et de kbrd. Mais j'ai besoin de faire pivoter toute la fenêtre. Est-il possible d'exécuter le programme tiers à partir d'une fenêtre WPF. Est-il alors possible d'utiliser une animation (rotation, traduction, etc.)? Merci encore pour votre réponse. –

1

Peut-être que celui-ci pourrait vous aider, j'avais un similar question

+1

Non, cela ne fonctionne que sur Windows Mobile (il utilise Microsoft.WindowsCE.Forms, qui ne fonctionnera pas dans Windows standard). Je devrais savoir - j'ai répondu à cette question. :) – MusiGenesis

+0

+1 Encore une fois merci! – OrElse

0

Ce serait un peu de travail supplémentaire, mais si vous avez juste besoin principalement le contenu de la forme à rotation (et non la totalité de la fenêtre y compris le titre barre, contrôles de fenêtre, etc., que je n'avais jamais vu auparavant), vous pouviez à la place créer un contrôle utilisateur entièrement dessiné par le propriétaire, pivotant de 90 degrés, et le déposer sur une forme ordinaire. Vous n'auriez même pas besoin d'ajuster votre dessin de tout, puisque vous pourriez faire un RotateTransform sur votre objet Graphics, puis dessiner tout normalement.

Si vous avez besoin de faire pivoter la totalité du formulaire, vous pouvez créer un formulaire sans bordure, puis faire la même chose, en dessinant vous-même la barre de titre et les contrôles Windows.

Mise à jour: voici un lien vers un article MSDN qui montre comment faire pivoter l'écran entier en C#:

http://msdn.microsoft.com/en-us/library/ms812499.aspx

Ceci est pour Windows régulière (pas Windows Mobile), il devrait donc travailler pour vos marsouins, bien qu'il fasse pivoter tout Windows et pas seulement le formulaire de votre application. Selon la vitesse à laquelle cela fonctionne et vos besoins globaux, vous pouvez faire pivoter l'écran de 90 degrés lorsque votre application obtient le focus, puis le faire revenir à la normale lorsque votre application perd le focus.

Mise à jour 2: Je viens de relire votre question et vos commentaires. Vous parlez de la rotation de la fenêtre d'une application distincte dans un processus séparé, donc WPF définitivement pas vous aider ici. Le lien MSDN peut être ce dont vous avez besoin. Dans votre application, vous devez faire pivoter l'écran de 90 degrés, puis démarrer l'autre application dans un processus distinct. Cela fonctionnerait mieux si vous pouviez forcer la fenêtre de l'application séparée à être agrandie, ce que vous pouvez faire en appelant les API FindWindow et SendMessage (vous pouvez également rendre la fenêtre toujours visible, ce qui placerait votre ordinateur dans une sorte de kiosque mode pour cette application). Il existe une version du code de processus qui, fondamentalement, fait d'une autre application un appel bloquant, ce qui signifie que votre application attendra la fermeture de l'application shell avant de la reprendre. Une fois l'application fermée, vous pouvez remettre l'écran dans son orientation normale.

+0

merci ... Comme dans mon commentaire ci-dessus c'est un programme tiers que je ne peux pas faire sans frontières. Ce serait grand si je pouvais faire pivoter toute la fenêtre. J'ai essayé System.Drawing.Graphics, mais il semble ne pas soutenir une rotation/orientation. Merci encore. –