2012-04-11 18 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ウィンドウが再作成されると、古いウィンドウが破棄され、新しいウィンドウが作成されるのを見ると、ちらつきが避けられません。通話を削除するだけで、必要はありません。

また、built-in supportを利用して、ラベルコントロールの透過性を忘れないようにしてください。