我尝试创建一个半透明的用户控制按钮,其背景不透明度在mouseEnter上从30%黑色变为70%黑色。我可以成功地将按钮涂成30%的黑色,但我不能从70%到30%。就像每次调用OnPaint()一样,它会描绘已经存在的东西,而不是从头开始。我使用子类Panel作为用户控件的背景。
这是我对子类Panel的OnPaint方法:
Graphics g = e.Graphics;
Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);
Brush brush = new SolidBrush(Color.FromArgb(Alpha, Color.Black)); // alpha is set by me
g.FillRectangle(brush, rect);
g.Dispose();
我和g.Clear()和g.Restore()玩过但是没有运气。有什么想法吗?
谢谢!
答案 0 :(得分:0)
我不确定Windows在这种情况下如何处理透明度。您应该尝试使窗口窗口上的矩形无效,如果该窗口重新绘制,背景可能看起来就像您想要的那样。
答案 1 :(得分:0)
我最终通过为背景图像交换30%不透明黑色和70%不透明黑色资源来解决这个问题。我还将按钮的BackColor设置为Color.Transparent。