我想实现的是一个半透明背景,覆盖整个屏幕。并且能够在其上方绘制不透明的画笔。
我尝试过创建一个与屏幕大小相同的窗体,然后设置它的颜色并设置
我尝试过创建一个与屏幕大小相同的窗体,然后设置它的颜色并设置
this.opacity = 0.5。但是这会影响窗体中所有的画笔。
另外,我也尝试将背景颜色设置为 Color.Transparent,并且在绘制不透明画笔之前使用 opacity 0.5 绘制覆盖整个屏幕的附加画笔... 但是背景也变得不透明了。即使设置了样式标志 (ControlStyles.SupportsTransparentBackColor, true)
我知道可以通过增加另一个窗体来实现这一点。一个用于透明背景,另一个用于不透明前景,但这不是过度设计吗?
有更好的方法吗?
更新1:
尝试评论中提到的建议。
当前状态:
Form1:主程序,调用“遮罩”的显示,其中包括:
Form2:遮罩背景(半透明黑色)和,
Form3:遮罩前景,这是用户绘制的地方。
Form1 和 Form2 的工作方式符合预期,但 Form3 拒绝支持透明度。
如果我设置
this.BackColor = Color.Lime;
this.TransparencyKey = Color.Lime;
当程序运行时性能下降,程序会出现严重的滞后(尽管它确实变得透明)。
理想情况下,我希望使用this.BackColor = Color.Transparent;
但这并没有效果(固体背景,无alpha通道)。
请注意,窗体覆盖屏幕,而背景通常是桌面。也许这就是为什么它不起作用的原因?