web-dev-qa-db-fra.com

Dessinez un rectangle de remplissage avec une faible opacité

J'ai une PictureBox avec une image dans une application Windows Form en langage C #. Je veux dessiner un FillRectangle à un endroit de la boîte à images.Mais j'ai également besoin de voir l'image de la boîte à images.Comment puis-je dessiner ce rectangle avec faible opacité pour voir l'image de la Picturebox?

25
Hossein Moradinia

Tu veux dire:

using (Graphics g = Graphics.FromImage(pb.Image))
{
    using(Brush brush = new SolidBrush(your_color))
    {
        g.FillRectangle(brush , x, y, width, height);
    }
}

ou vous pouvez utiliser

Brush brush = new SolidBrush(Color.FromArgb(alpha, red, green, blue))

alpha va de 0 à 255, donc une valeur de 128 pour votre alpha vous donnera 50% d'opacité.

60
Marco

Vous devez créer un objet Graphics basé sur votre image PictureBox et dessiner ce que vous voulez dessus:

Graphics g = Graphics.FromImage(pictureBox1.Image);
g.FillRectangle(Brushes.Red, new Rectangle(10, 10, 200, 200))
pictureBox1.Refresh()

Ou comme suggéré par @Davide Parias, vous pouvez utiliser le gestionnaire d'événements Paint:

private void pictureBox_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.FillRectangle(Brushes.Red, new Rectangle(10, 10, 200, 200));
}
2
Samich