0

我正在尝试做一个具有透明度的自定义标签类,并且我正在搜索很多关于此的文章,但我的情况不同,因为我正在尝试使用透明标签进行倒计时,然后当我使用下面的示例代码时成功闪烁。我使用间隔设置为 100 的计时器,然后更改文本自定义标签。我不知道刷新时我能做些什么来获得更好的性能,知道吗?

class CustomLabel : Label
{
    public CustomLabel()
    {
        this.SetStyle(ControlStyles.Opaque, true);
        this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
    }

    protected override System.Windows.Forms.CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x20;
            return cp;
        }
    }
    public override string Text
    {
        get
        {
            return base.Text;
        }
        set
        {
            base.Text = value;
            RecreateHandle();
        }
    }
}
4

1 回答 1

1

由于 RecreateHandle() 调用,它会闪烁。这重新创建了本机 Windows 窗口,当您看到旧窗口被破坏并创建新窗口时,闪烁是不可避免的。只需删除呼叫,没有必要。

并且不要忘记利用Label 控件中对透明度的内置支持。

于 2012-04-11T11:16:44.167 回答