web-dev-qa-db-fra.com

Comment dessiner des graphiques simples en C #?

Je veux juste dessiner des objets 2D simples comme un cercle, une ligne, un carré, etc. en C #. Comment je fais ça? De retour à l'époque Turbo C++, je me souviens d'avoir initialisé une bibliothèque graphique pour pouvoir en faire de même. Dois-je faire quelque chose de similaire dans .NET? Est-ce différent pour les objets 3D? Est-ce que des choses comme DirectX faciliteront cela? Tous les liens vers des tutoriels ou des échantillons sont très appréciés.

17
msvcyc

Comme d’autres l’ont dit, consultez System.Drawing . (Je ne fais que répéter cela par souci d'exhaustivité.) System.Drawing expose la bibliothèque de dessins GDI + Windows à votre application.

Un bon tutoriel pour vous aider à démarrer avec System.Drawing et GDI + peut être trouvé à C # Corner

Quelques points importants à noter:

  1. De nombreux objets GDI + implémentent l'interface IDisposable et doivent donc être encapsulés dans des blocs using. Assurez-vous de suivre les conventions d'élimination appropriées. Si vous ne supprimez pas les objets GDI +, vous risquez d'avoir de très mauvais effets secondaires pour votre application. (Les objets GDI + dans .NET correspondent à leurs équivalents API Windows sous-jacents.)
  2. Les API telles que DirectX sont extrêmement complexes et pour une bonne raison. Ils ne sont pas conçus pour des formes simples, mais plutôt pour des applications multimédias complexes, hautement performantes et hautement interactives. (En d’autres termes, les jeux en général.) Vous pouvez accéder à DirectX via les interfaces Managed DirectX, mais là encore, c’est probablement une surabondance pour vos besoins directs.
  3. Si vous êtes intéressé par un moyen plus simple de travailler avec DirectX, utilisez XNA . Cependant, il s’agit bien d’une librairie spécifique à un jeu, et elle risque à nouveau d’être exagérée. Je suis un peu en retard pour la fête, mais selon les commentaires ci-dessous, cela n'est plus du tout supporté. (Cela a du sens; je n’en ai plus entendu parler depuis des années.)
21
John Rudy

Voici un exemple de code simple qui vous aidera à démarrer (supposons que vous ayez un PictureBox nommé pictureBox1):

Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
    g.DrawLine(new Pen(Color.Red), 0, 0, 10, 10);
}
pictureBox1.Image = bmp;

L'objet graphique a un tas d'autres méthodes de dessin, et Intellisense vous montrera comment les appeler.

13
MusiGenesis

Lisez à propos des espaces de noms GDI, GDI + et System.Drawing, par exemple ici .
Vous n’utiliseriez pas DirectX pour dessiner des formes simples, mais pour restituer des éléments 3D complexes. En outre, utiliser DX Api sous C # est un peu plus délicat (bien que pas si difficile).

3
Marcin Deptuła

Découvrez l'espace de noms System.Drawing: http://msdn.Microsoft.com/en-us/library/system.drawing.aspx

1
Keith

GDI + À l'aide de System.Drawing 

0
amy

Examinez l'espace de noms System.Drawing

0
klabranche

Vous devez utiliser GDI +.

La façon dont vous le faites dépend légèrement de ce sur quoi vous voulez puiser. Vous pouvez dessiner sur un contrôle ou un formulaire, ou sur un objet image. Quoi qu'il en soit, vous avez besoin d'un objet System.Drawing.Graphics qui se trouve, je crois, dans System.Drawing.dll.

Vous pouvez instancier une nouvelle classe Bitmap et appeler Graphics.FromImage (myImage), puis dessiner à l'aide des méthodes de l'objet Graphics que vous venez de créer. Si vous souhaitez dessiner sur un formulaire ou un contrôle, substituez simplement la méthode OnPaint et recherchez la propriété Graphics sur la classe EventArgs.

Plus d'informations sur l'espace de noms System.Drawing ici: http://msdn.Microsoft.com/en-us/library/system.drawing.aspx

0
Max Schmeling

Recherchez API graphique Direct3D gérée dans .NET Source

0
Myra