C# 我们能够设置面板背景图像的不透明度吗?
正如你所知道的,这在WPF中是可能的。但我有一个Windows窗体中的项目,但我不想费力地将项目移动到WPF中。那么,在Windows窗体中是否可能?(与另一个问题不同,我不要求面板的透明度。我问的是“如果我想使用背景图像,我可以将其设置为半透明吗”)不透明度只能在顶级窗口上工作。不能在面板上使用不透明度 如果你只想要一张不透明的图片,我想你可以自己画,就像下面的例子<代码>图像是的一个实例 编辑:C# 我们能够设置面板背景图像的不透明度吗?,c#,.net,winforms,C#,.net,Winforms,正如你所知道的,这在WPF中是可能的。但我有一个Windows窗体中的项目,但我不想费力地将项目移动到WPF中。那么,在Windows窗体中是否可能?(与另一个问题不同,我不要求面板的透明度。我问的是“如果我想使用背景图像,我可以将其设置为半透明吗”)不透明度只能在顶级窗口上工作。不能在面板上使用不透明度 如果你只想要一张不透明的图片,我想你可以自己画,就像下面的例子图像是的一个实例 编辑: 文章可能会给你更多提示。你需要尝试两件事:将背景色设置为透明,并将图像转换为不透明度 发件人: 然后,面
文章可能会给你更多提示。你需要尝试两件事:将背景色设置为透明,并将图像转换为不透明度 发件人: 然后,面板属性将如下所示:
panel1.BackColor = Color.Transparent;
panel1.BackgroundImage = SetImageOpacity(backImage, 0.25F);
不,不,我知道怎么做。我在问“我是否使用背景图像”。请不要混淆。winforms并不真正支持透明性。如果你想坚持使用winforms,就不要尝试做那些花哨的UI东西,只做那些常规的、丑陋的、无聊的、战舰灰色的东西。否则,使用WPF,您将能够创建一个更丰富的UI。我搬到那里去了。但是这个应用程序非常大。再次在WPF中创建它将是一件非常困难的事情。将“向后”移动到winforms是前所未闻的,它的图形框架在comparison@Zgrknr您还可以使用
ElementHost
方法,将应用程序的一部分以渐进的方式移动到WPF,而不是完全返工,或者,如果你有几个表单
s,你可以一个接一个地将它们重做到WPF窗口
s,这就是我正在做的。但为了实现3D效果,我使用了Photoshop中设计的图片。当然,如果我找不到解决方案,我会在面板上画图。仍然投票支持它,因为它很有创意。谢谢。这也是我想到的第一件事
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);