2012-04-11 98 views
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(); 
     } 
    } 
} 

回答

1

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

并且不要忘记在Label控件中利用built-in support来获得透明度。