如你所知,它可以在WPF中使用。但我有一个Windows窗体项目,但我不想努力将项目转移到WPF。在Windows Forms中可以吗? (与另一个问题中的问题不同,我不会问小组的透明度。我要求"如果我要使用背景图像",我可以将其设置为半透明。)
答案 0 :(得分:4)
您需要尝试两件事:将BackColor设置为Transparent并将图像转换为具有不透明度的图像。
来自Change Opacity of Image in C#:
public Image SetImageOpacity(Image image, float opacity) {
Bitmap bmp = new Bitmap(image.Width, image.Height);
using (Graphics g = Graphics.FromImage(bmp)) {
ColorMatrix matrix = new ColorMatrix();
matrix.Matrix33 = opacity;
ImageAttributes attributes = new ImageAttributes();
attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default,
ColorAdjustType.Bitmap);
g.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height),
0, 0, image.Width, image.Height,
GraphicsUnit.Pixel, attributes);
}
return bmp;
}
然后您的面板属性将如下所示:
panel1.BackColor = Color.Transparent;
panel1.BackgroundImage = SetImageOpacity(backImage, 0.25F);
答案 1 :(得分:1)
不透明度只适用于顶级窗口。您无法在Panel上使用不透明度。
如果您只想要一张不透明的图片,我想您可以自己绘制,如下例所示。 image
是System.Drawing.Image的实例。
using (Graphics g = Graphics.FromImage(image))
{
Pen pen = new Pen(Color.FromArgb(alpha, 255, 255, 255), image.Width);
g.DrawLine(pen, -1, -1, image.Width, image.Height);
g.Save();
}
修改强> This文章可能会给你任何进一步的提示。