2010-04-29 7 views
2

Je viens d'un milieu Java et d'essayer de le port d'une version simple du jeu de Conway de la vie que j'ai écrit en C# afin d'apprendre la langue.l'aide de Visual Studio 2010 Express pour créer une surface que je peux attirer

En Java, je dessinais ma sortie en héritant de JComponent et de la peinture remplaçant(). Ma nouvelle classe de toile avait alors une instance du backend de la simulation qu'elle pouvait lire/manipuler. J'ai alors pu obtenir l'éditeur d'interface graphique WYSIWYG (Matisse, de NetBeans) pour me permettre de placer visuellement la toile. En C#, j'ai compris que j'ai besoin de surcharger OnPaint() pour dessiner des choses, ce qui (pour autant que je sache) nécessite que je hérite de quelque chose (j'ai choisi Panel). Je ne peux pas comprendre comment obtenir l'éditeur de formulaires Windows pour me laisser placer ma classe personnalisée. Je suis également incertain de l'endroit où dans le code généré je dois placer ma classe.

Comment puis-je faire cela, et met tout mon code de dessin dans une sous-classe vraiment comment je devrais aller à ce sujet? Le manque de réponses faciles sur Google suggère qu'il me manque quelque chose d'important ici. Si quelqu'un veut suggérer une méthode pour le faire aussi dans WPF, je suis curieux de l'entendre.

Merci

Répondre

2

Dans Windows Forms, vous pouvez simplement appuyer sur un contrôle en appelant sa méthode CreateGraphics. Si vous avez un panneau, par exemple, vous pouvez dessiner comme ceci:

using (var g = panel1.CreateGraphics()) { 
    g.DrawString("Hello World", 0, 0); 
} 

Les contrôles ont également un événement Paint. Ajouter un gestionnaire d'événements en double-cliquant sur l'événement dans la fenêtre des propriétés, et vous pouvez dessiner comme ceci:

private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
{ 
    e.Graphics.DrawString("Hello World", 0, 0); 
} 

Si vous voulez tirer d'un contrôle, vous pouvez soit le faire dans le code, ou créer un nouveau contrôle utilisateur et modifiez la classe de base dans le code et dans le fichier .Designer.cs (bien que UserControl ou simplement Control ira bien). Si vous avez déjà un formulaire dans le concepteur, il est déjà dérivé de Form et vous pouvez simplement remplacer OnPaint.

Mon conseil est: Vous n'aurez généralement pas besoin de créer une nouvelle classe si vous voulez juste dessiner quelque chose. Utilisez simplement l'événement Paint. Si vous devez immédiatement redessiner, appelez Actualiser pour que le contrôle se redessine automatiquement. Cela devrait vous permettre de partir. Notez qu'il existe également une propriété DoubleBuffered protégée, qui peut vous aider à éviter les scintillements (définissez-la pour le formulaire ou dans votre contrôle dérivé).

Je ne suis pas sûr de ce que vous feriez dans WPF. Je n'ai jamais eu besoin de dessiner manuellement quelque chose dans WPF, car le moteur de rendu et de rendu est très puissant, et vous pouvez simplement vous en passer avec des modèles de données, des templates de contrôle, etc. le moteur dessine pour vous.

+0

Merci, c'est exactement ce que j'avais besoin de savoir! – Joel

+0

Haha, merci. Je suis nouveau ici: P – Joel

Questions connexes