我希望实现在一个完全透明的窗体上画一个部分透明的图形,但是试过了发现画出图形始终不透明,一直都看不到透明窗体下面的内容(例如桌面),具体实现代码如下: public Form1()
{
InitializeComponent();
this.TransparencyKey = this.BackColor;
} private void Form1_Load(object sender, EventArgs e)
{
} private void Form1_Paint(object sender, PaintEventArgs e)
{
System.Drawing.Graphics g1 = this.CreateGraphics();
g1.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; System.Drawing.Color Mycolor = System.Drawing.Color.FromArgb(128, Color.Yellow);//说明:1-(128/255)=1-0.5=0.5 透明度为0.5,即50%
System.Drawing.SolidBrush sb1 = new System.Drawing.SolidBrush(Mycolor); g1.FillRectangle(sb1, 0, 0, 550, 550); //半透明矩形
g1.FillEllipse(sb1, 20, 20, 100, 100); //半透明效果
g1.FillEllipse(Brushes.Yellow, 120, 20, 100, 100); //实色效果
sb1.Dispose();
}
}
那个半透明矩形对于透明窗体后面的东西(非窗体本身控件内容)一点都不透明,完全看不到,偶然却发现远程桌面调试却可以看到,还以为实现了,不知道为什么,希望哪位兄弟指点一下,谢谢!
{
InitializeComponent();
this.TransparencyKey = this.BackColor;
} private void Form1_Load(object sender, EventArgs e)
{
} private void Form1_Paint(object sender, PaintEventArgs e)
{
System.Drawing.Graphics g1 = this.CreateGraphics();
g1.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; System.Drawing.Color Mycolor = System.Drawing.Color.FromArgb(128, Color.Yellow);//说明:1-(128/255)=1-0.5=0.5 透明度为0.5,即50%
System.Drawing.SolidBrush sb1 = new System.Drawing.SolidBrush(Mycolor); g1.FillRectangle(sb1, 0, 0, 550, 550); //半透明矩形
g1.FillEllipse(sb1, 20, 20, 100, 100); //半透明效果
g1.FillEllipse(Brushes.Yellow, 120, 20, 100, 100); //实色效果
sb1.Dispose();
}
}
那个半透明矩形对于透明窗体后面的东西(非窗体本身控件内容)一点都不透明,完全看不到,偶然却发现远程桌面调试却可以看到,还以为实现了,不知道为什么,希望哪位兄弟指点一下,谢谢!
虽然 你的窗体通过this.TransparencyKey = this.BackColor;弄成全透明的了
比如 现在你的窗体的背景色是红色
运行出来 你的窗体空了 透明了
如果我在上面 10,10,100,100 画一个 半透明黑色矩形Color.FromArgb(125,0,0,0);
出来后 矩形你是看到了
不过他是在一个红色的基础上画出来的一个半透明黑色
也就是 虽然你的窗体透明了 可是你的窗体仍然是有背景色的 只是你已经看不到罢了
也就是 你在话的是后 Graphics 用你的窗体的背景色作为 画布的背景色 出来就这个效果
还有TransparencyKey 不一定就能把窗体穿过 比如 用Green和Red来试试? 虽然不太清楚这是怎么一回事
如果你非要 弄一个半透明的效果出来 办法倒是有用两个窗体 一个窗体搞成半透明 一个窗体重叠到到上面弄成全透明 图像绘制在全透明的窗体上
..你换成
this.BackColor = Color.Red;
this.TransparencyKey = Color.Red;
在看看效果?、、、这是一个神奇又很风骚的问题