C#中怎样重写form才能使窗体支持透明色
发布网友
发布时间:2022-05-01 11:39
我来回答
共4个回答
热心网友
时间:2023-10-10 06:22
this.BackColor = System.Drawing.Color.Red;//将窗体背景设置成红色
this.TransparencyKey = System.Drawing.Color.Red; //将红色设置成透明色
将from的FormBorderStyle设置为None
测试的时候加个按钮之类的,要不什么都看不到
热心网友
时间:2023-10-10 06:23
听我说,你要设置某图片为背景,并且为不规则窗体
是这样的
在你的Form1.cs中首先输入:
protected override void OnPaint(PaintEventArgs e)
{
GraphicsPath graphicpath = CalculateControlGraphicsPath(bitmap);
this.Region = new Region(graphicpath );
}
因为graphicpath是你所选的图片的区域,所以要用一些方法
public GraphicsPath CalculateControlGraphicsPath(Bitmap bitmap)
{
GraphicsPath graphicpath = new GraphicsPath();
Color tran = bitmap.GetPixel(0, 0);
for (int row = 0; row < bitmap.Height; row++)
{
for (int wid = 0; wid < bitmap.Width; wid++)
{
if (bitmap.GetPixel(wid, row) != tran)
{
graphicpath.AddRectangle(new Rectangle(wid, row, 1, 1));
}
}
}
return graphicpath;
}
差不多就可以了,因为每张图片做为窗体背景,背景色都为白色,我们遍历所有区域,如果有哪个区域不是白色,就是我们要选择的区域
我这么说,你大概懂了吧
热心网友
时间:2023-10-10 06:23
先PS一张心型图,外边是透明(或别的色),保存为gif或png
在vs中formBordStyle设为none,
第一种,外边是透明,backcolor设为XX色,下面transparencyKey同样设为XX色。
第二种,如心型外边是别的色,下面transparencyKey同样设为别的色。
OK
热心网友
时间:2023-10-10 06:24
//
// 摘要:
// 获取或设置一个值,该值指示能否调整窗体的不透明度。
//
// 返回结果:
// 如果可以更改窗体的不透明度,则为 true;否则为 false。
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool AllowTransparency { get; set; }
//
// 摘要:
// 获取或设置窗体的不透明度级别。
//
// 返回结果:
// 窗体的不透明度级别。 默认值为 1.00。
[DefaultValue(1)]
[TypeConverter(typeof(OpacityConverter))]
public double Opacity { get; set; }
C#的窗体本身就可以支持透明色,只要更改上面两个属性即可
namespace Project1
{
class MainForm: Form
{
public MainForm()
{
Text = "MainForm";
BackColor = Color.FromArgb(255, 255, 0, 0);
AllowTransparency = true;
Opacity = 0.5;
}
}
}
透明度为50%,效果如图