为什么这个标签的文本不是完全透明的?

3

我正在尝试在表单上显示一个标签,其中表单是透明的。

如下图所示,标签文本周围有轮廓线:

enter image description here

黑色是另一个表单的背景。

以下是我的表单代码:

label1.ForeColor = System.Drawing.Color.Red;
label1.BackColor = System.Drawing.Color.Transparent;

BackColor = System.Drawing.Color.White;
TransparencyKey = System.Drawing.Color.White;
TopMost = true;

如何在不显示上述图像中的白色的情况下显示标签?

这是正常的,文本已经进行了抗锯齿处理。靠近字母的像素是各种红色阴影。不是纯白色,因此也不是透明的。如果您想要实现这个效果,就不能使用Label控件,您需要自己绘制它。 - Hans Passant
请参考此链接:https://dev59.com/hk3Sa4cB1Zd3GeqPsBXJ。它会对你有所帮助! - Bharat Gupta
1个回答

0

我在评论中提到了一个链接,然后我也尝试了一下。它有效。请查看下面的截图。第一个文本来自通用标签,而第二个文本来自帖子中的CustomLabel。

enter image description here

简单概括需要完成的任务,我会引用那篇帖子本身。我们需要创建一个继承自System.Windows.Forms.Label的CustomLabel类:

public partial class CustomLabel : Label
{
    private TextRenderingHint _hint = TextRenderingHint.SystemDefault;   
    public TextRenderingHint TextRenderingHint
    {
        get { return this._hint; }
        set { this._hint = value; }
    }        

    protected override void OnPaint(PaintEventArgs pe)
    {            
        pe.Graphics.TextRenderingHint = TextRenderingHint;
        base.OnPaint(pe);
    }
}

接下来,我们将构建此自定义标签,并出现在工具箱中供我们使用。将其拖到表单上后,我们需要将其TextRenderingHint属性设置为AntiAlias


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接