使用低透明度绘制填充矩形

30

我有一个包含图片的PictureBox控件,它是C#语言中Windows窗体应用程序的一部分。我想在PictureBox的某个位置绘制一个FillRectangle,但我也需要看到PictureBox的图片。如何使用低透明度绘制矩形以便看到PictureBox的图片


请查看此处的问题和答案:http://stackoverflow.com/questions/1113437/drawing-colors-in-a-picturebox受那些答案的启发,您可以基本上从那里复制粘贴 :) - Davide Piras
2个回答

73

你的意思是:

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,因此 alpha 值为128时,它对应的透明度为50%。


就像图形类型一样,画刷类型也实现了IDisposable接口。也许示例应该证明这个事实。 - tafa
你需要考虑颜色的 alpha 值,以便实现非实心填充(低不透明度)。 - hungryMind

3
你需要创建一个基于你的PictureBox图片的Graphics对象,并在上面绘制你想要的内容:
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));
}

在事件处理程序中:private void pictureBox_Paint(object sender, PaintEventArgs e)... - Davide Piras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接