我通过响应 Draw 事件来自定义 WinForms ToolTip 控件的外观。我只希望工具提示的某些角是圆角的。我已经完成了所有工作,以至于第一次显示工具提示时,一切看起来都很完美。然而,在随后的显示中,圆角矩形的未填充区域继续具有第一次显示工具提示时背景中的内容。
问题的屏幕截图(我显然无权内联): http ://tinypic.com/r/30xa3w9/3
在图片中,您可以在左上角看到剩余的伪影,我希望它只是透明的(显示灰色背景),如下所示:
tinypic.com/r/mvn8eo/3(也没有添加多个链接的权利)
下面是绘图代码:
private void ToolTip_Draw(object sender, DrawToolTipEventArgs args)
{
args.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
var rect = new RectangleF(0, 0, args.Bounds.Width, args.Bounds.Height);
using (var backBrush = new LinearGradientBrush(rect, Color.Silver, this.BackColor, 90))
{
using (var path = GetRoundedRectangle(rect, 10, 4, 4, 1))
{
args.Graphics.FillPath(backBrush, path);
args.DrawText();
}
}
}
GetRoundedRectangle 函数(不包括在内)只是为我想要的圆角几何计算适当的 GraphicsPath。
在将 BackColor 设置为 Color.Transparent 之后,我尝试添加对 args.DrawBackground 的调用,但这只是用表单背景的深灰色填充该区域,而不是实际上是透明的,我认为这是典型的“模拟”透明度赢表格。
附带说明一下,IsBalloon 设置为 true 的非自定义工具提示是具有正确透明度的非矩形。
任何人都可以建议解决此问题吗?