Нарисуйте прямоугольник заливки с низкой непрозрачностью - PullRequest
25 голосов
/ 28 сентября 2011

У меня есть PictureBox с изображением в приложении Windows Form на языке C #. Я хочу нарисовать FillRectangle в каком-то месте picturebox.Но мне также нужно увидеть изображение в картинной рамке. Как я могу нарисовать этот прямоугольник с низкой непрозрачностью, чтобы увидеть изображение Picturebox ?

Ответы [ 2 ]

60 голосов
/ 28 сентября 2011

Вы имеете в виду:

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

или вы можете использовать

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

, где alpha изменяется от 0 до 255, поэтому значение 128 для вашегоАльфа даст вам 50% непрозрачности.

2 голосов
/ 28 сентября 2011

Вам нужно создать Graphics объект на основе вашего PictureBox изображения и нарисовать на нем то, что вы хотите:

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

Или, как предлагает @Davide Parias, вы можете использовать обработчик события Paint:

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