Maison > développement back-end > C++ > Comment dessiner des formes aux coordonnées de la souris à l'aide de l'événement Paint C# ?

Comment dessiner des formes aux coordonnées de la souris à l'aide de l'événement Paint C# ?

Patricia Arquette
Libérer: 2025-01-03 20:20:43
original
218 Les gens l'ont consulté

How to Draw Shapes at Mouse Coordinates using the C# Paint Event?

Dessiner des formes aux coordonnées de la souris à l'aide de l'Événement Paint**

En C#, une tâche courante consiste à créer des applications de dessin personnalisées. Ceci est généralement réalisé en gérant l'événement Paint d'un contrôle ou en remplaçant la méthode OnPaint dans un contrôle utilisateur. Cependant, comprendre comment appeler des méthodes avec plusieurs arguments et utiliser PaintEvent peut être difficile. Cet article vous guidera tout au long du processus de dessin de formes aux coordonnées de la souris à l'aide de l'événement Paint.

Utilisation du PaintEvent pour un dessin personnalisé

Quand en dessinant sur la surface d'un contrôle, il est important d'utiliser l'événement Paint ou de remplacer OnPaint. Toute tentative de mise en cache de l'objet Graphics entraînera des résultats non valides. Utilisez plutôt l'objet Graphics fourni par PaintEventArgs. Si vous avez des exigences de dessin complexes, envisagez de transmettre l'objet Graphics à des méthodes capables d'effectuer des dessins spécialisés.

Dessiner des rectangles avec MouseCoordonnées**

Pour dessiner des formes aux coordonnées de la souris , une approche courante consiste à gérer l'événement MouseDown et à créer un nouvel objet représentant la forme, en stockant son point de départ et d'autres propriétés. Lorsque la souris se déplace, l'emplacement actuel est utilisé pour calculer la taille de la forme. Ces informations sont utilisées dans l'événement Paint pour restituer la forme.

Effacer la zone de dessin

Pour effacer la zone de dessin, vous pouvez soit supprimer les objets de forme de la liste (si vous utilisez une liste pour stocker des formes) et invalidez le contrôle ou effacez la liste puis invalidez.

Exemple Implémentation

L'extrait de code suivant montre comment dessiner des rectangles aux coordonnées de la souris à l'aide de l'événement Paint :

// Store shape parameters in a DrawingRectangle class
List<DrawingRectangle> drawingRects = new List<DrawingRectangle>();

private class DrawingRectangle
{
    public Rectangle Rect { get; set; }
    public Size Size { get; set; }
    public Point Location { get; set; }
    public Point StartPosition { get; set; }
    public Color DrawingColor { get; set; } = Color.LightGreen;
    public float PenSize { get; set; } = 3f;
}

// Start drawing on MouseDown
private void form1_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button != MouseButtons.Left) return;
    DrawingRects.Add(new DrawingRectangle()
    {
        Location = e.Location,
        Size = Size.Empty,
        StartPosition = e.Location,
        Owner = (Control)sender,
        DrawingColor = SelectedColor // Shape's Border Color
    });
}

// Update shape size on MouseMove
private void form1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button != MouseButtons.Left) return;
    var dr = DrawingRects[DrawingRects.Count - 1];
    if (e.Y < dr.StartPosition.Y) { dr.Location = new Point(dr.Rect.Location.X, e.Y); }
    if (e.X < dr.StartPosition.X) { dr.Location = new Point(e.X, dr.Rect.Location.Y); }

    dr.Size = new Size(Math.Abs(dr.StartPosition.X - e.X), Math.Abs(dr.StartPosition.Y - e.Y));
    this.Invalidate();
}

// Draw shapes in the Paint event
private void form1_Paint(object sender, PaintEventArgs e)
{
    DrawShapes(e.Graphics);
}

// Method to draw shapes using Graphics object
private void DrawShapes(Graphics g)
{
    if (DrawingRects.Count == 0) return;
    g.SmoothingMode = SmoothingMode.AntiAlias;
    foreach (var dr in DrawingRects)
    {
        using (Pen pen = new Pen(dr.DrawingColor, dr.PenSize))
        {
            g.DrawRectangle(pen, dr.Rect);
        }
    }
}
Copier après la connexion

Dans cet exemple, les coordonnées de la forme sont stockées dans la classe DrawingRectangle. L'événement MouseDown déclenche la création d'un nouvel objet de forme et les événements MouseMove suivants ajustent sa taille de manière dynamique. Enfin, l'événement Paint utilise l'objet Graphics pour restituer les formes sur la surface du contrôle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal