Dessinez un rectangle
Pour une raison quelconque, le rectangle n'apparaissent pas lorsque je lance le programme. Mais le code s'exécute sans erreur. Ce que je fais mal?
(Je suis en utilisant csc.exe pour compiler le code, et je suis en train d'écrire dans notepad++)
Code de dessin:
Graphics g = myform.CreateGraphics();
Pen selPen = new Pen(Color.Blue);
g.DrawRectangle(selPen, 10, 10, 50, 50);
g.Dispose();
Code Complet:
using System;
using System.Windows.Forms;
using System.Drawing;
public class Hello1
{
public static void Main()
{
Form myform = new Form();
myform.Text = "Main Window";
myform.Size = new Size(640, 400);
myform.FormBorderStyle = FormBorderStyle.FixedDialog;
myform.StartPosition = FormStartPosition.CenterScreen;
Graphics g = myform.CreateGraphics();
Pen selPen = new Pen(Color.Blue);
g.DrawRectangle(selPen, 10, 10, 50, 50);
g.Dispose();
myform.ShowDialog();
}
}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez dessiner sur un formulaire dans la
Form.OnPaint
méthode remplacer ou dans leForm.Paint
gestionnaire d'événement seulement.Si vous avez besoin de créer une nouvelle classe héritée de
Form
:Ajoutez le code suivant à votre formulaire:
Vous pouvez également vous abonner à la
myform.Paint
événement comme suit:myform.Paint += ...
).C'est parce que la forme est peint lorsqu'il est démontré (dans votre cas, quand
ShowDialog
est appelé), et qui efface le rectangle que vous avez dessiné.Vous devez dessiner le rectangle:
Shown
cas de la forme - mais méfiez-vous que lorsque le formulaire sera repeinte, le rectangle va disparaître (par exemple lorsque vous minimiser/maximiser la forme),Paint
événement, voir Dimitri de la réponse).Si vous réorganisez le code pour mettre le code après la projection de la partie, vous pouvez voir le rectangle. Comme pas de lignes sont lues après ShowDialog() jusqu'à ce que le formulaire est fermé, vous pourriez avoir besoin d'appeler le Show() méthode.
En faisant ainsi, vous pouvez voir le rectangle. Mais il ne va pas y rester, sauf si vous ajoutez le dessin de la partie sur son OnPaint Gestionnaire d'événement. Le rectangle dessiné aura disparu quand vous essayez de réduire ou déplacer le côté contenant le rectangle, ou wheneever le formulaire doit être Établi par l'OS.