在图片框上添加额外的半透明图层

时间:2010-03-29 11:07:31

标签: c# winforms

我有一个带有图像的标准图片框控件。我想添加半透明层。它不会隐藏图像,它将是某种过滤器。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

代码与此类似:

private void pictureBox1_Paint (object sender, PaintEventArgs e)
{
   using (SolidBrush b = new SolidBrush(Color.FromArgb(128, Color.White))
   {
       e.Graphics.FillRectangle (b, 0, 0, pictureBox1.Width, pictureBox1.Height);
   }

但是,上面的代码只使用单个颜色画笔,其不透明度设置为128.还有其他画笔类可用,例如LinearGradientBrushTextureBrushPAthGradientBrush和{{ 1}}。

<强>建议 要绘制您想要的自定义效果(对于按钮按下状态),建议的方法是生成预渲染图像,您可以在应用程序的运行时创建或使用外部程序(如Adobe Photoshop)创建,然后保存这些图像。

然后绘画代码将简单地采用代表“按钮”当前状态的图像,并在覆盖HatchBrush方法中绘制该图像。

这种技术可以提供更好的图形绘制性能,而不是简单地在应用程序中的不同状态更改时重新绘制相同的状态。

答案 1 :(得分:0)

您可以注册Paint事件并编写如下代码:

private void pictureBox1_Paint (object sender, PaintEventArgs e)
    {
      e.Graphics.FillRectangle (Brushes.Transparent, 0, 0, pictureBox1.Width, pictureBox1.Height);
    }

你需要生成一个半透明的刷子(改变所需颜色的alpa级别)

有关控件中自定义绘制的更多信息,请参阅MSDN

这只是一个小代码段。要正确使用Print事件和Graphics对象,请首先阅读MSDN内容。