我有一个用户界面,需要在C#项目中放置一些圆形按钮,其背后有一些数据。按钮是System.Windows.Forms.buttons,我使用了透明的GIF图像来创建它们。但是,透明区域不透明。我在网上寻找参考资料,但没有找到任何关于如何正确做到这一点的建议。有一些提到在Visual Studio 2008中这样做但我需要在2005年保留这个项目。感谢任何帮助或建议。
答案 0 :(得分:1)
我很确定你需要使用带有WinForms的PNG来获得图像透明度。我知道我已成功使用它们了。
编辑:当我使用PNG时,我将它们与Image控件叠加到Form1.BackgroundImage上;我没有在按钮中使用它们。
我认为最好的办法是从使用按钮控件切换到使用图像控件。您也可以尝试将按钮样式更改为扁平(我认为它是扁平的,也许是其他样式之一)并看看您是否可以获得您想要的效果。
答案 1 :(得分:1)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
public class TransparentControl : Control
{
public TransparentControl()
{
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
SetStyle(ControlStyles.ResizeRedraw, true);
this.BackColor = Color.Transparent;
}
protected override void OnPaint(PaintEventArgs pevent)
{
Graphics g = pevent.Graphics;
g.DrawRectangle(Pens.Black, this.ClientRectangle);
}
protected override void OnPaintBackground(PaintEventArgs pevent)
{
// don't call the base class
//base.OnPaintBackground(pevent);
}
protected override CreateParams CreateParams
{
get
{
const int WS_EX_TRANSPARENT = 0x20;
CreateParams cp = base.CreateParams;
cp.ExStyle |= WS_EX_TRANSPARENT;
return cp;
}
}
// rest of class here...
}
答案 2 :(得分:1)
试试这个:
Bitmap temp = new Bitmap(button1.Image);
temp.MakeTransparent(Color.Black); //your transparent color, in this case black
button1.Image = (Image) Logo;
temp.Dispose();
temp = null;
答案 3 :(得分:1)
只需将Button的FlatStyle property设置为“Flat”......即可!我知道这适用于PNG,但我没有使用GIF进行测试。
答案 4 :(得分:0)
您需要将按钮的BackColor属性设置为“Transparent”。
Button1.BackColor = System.Drawing.Color.Transparent;
答案 5 :(得分:0)
创建一个派生自按钮的类并放入此代码。
protected override CreateParams CreateParams
{
get
{
const int WS_EX_TRANSPARENT = 0x20;
CreateParams cp = base.CreateParams;
cp.ExStyle |= WS_EX_TRANSPARENT;
return cp;
}
}
和创建方法
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
this.BackColor = Color.Transparent;
答案 6 :(得分:0)
我正在使用Visual Studio 2005并尝试按照上面的示例进行操作,但它不起作用(create方法中的代码段)。 我有一个表格的背景,我正在尝试创建斜面透明按钮。
目前插入上面的代码使我的背景透明,我的按钮全部为白色。
这是我的代码片段
Bitmap mainFormBackground = (Bitmap)Image.FromFile("background.jpg");
this.BackgroundImage = mainFormBackground;
this.BackColor = Color.Black;
this.ForeColor = Color.White;
添加一些按钮
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
this.BackColor = Color.Transparent;
我甚至尝试过
btnName.BackColor = Color.Transpare;
这也不起作用
答案 7 :(得分:0)
以下答案在Visual Studio 2012中得到验证,并与backgroundImage格式BMP,GIF,PNG以及JPG一起使用;由MS Paint创建。
通过按钮显示背景:
转到按钮的属性窗口。然后更改FlatStyle和BackColor,如下图所示:
注意:颜色将从Web Tab中选择,FlatStyle将被选为Flat。
但在此之后,按钮将是透明的,直到鼠标不悬停或选择或按下它。在这种情况下,它会呈现一些不透明的颜色。如果要使其始终透明,请按照以下图像将相应的颜色更改为透明,如前所述。要更改的颜色是:' MouseOverBackColor' &安培; ' MouseDownBackColor'
注意:如果您选择始终透明,如图所示,按钮的外观将不会发生变化!
希望它会对你有所帮助。
祝你好运!