0

私は次のような簡単なことをすることができます:

  1. 新しい.NETフォームアプリケーションを作成します
  2. 1つのRectangleShapeをフォームに配置します
  3. デザイナコードのInitializeComponentメソッドに以下を追加します

    Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or _
        ControlStyles.UserPaint Or _
        ControlStyles.DoubleBuffer, True)
    Me.UpdateStyles()
    
  4. プログラムを実行する
  5. フォームのサイズを変更する
  6. 長方形がちらつくのを怒って見てください

これを取り除くことは可能ですか?または、ShapeContainerに内部的な欠陥があり、別の解決策を見つける必要がありますか?

4

2 に答える 2

2

かなり欠陥があります。WS_EX_TRANSPARENTスタイルがオンになっているフォームにオーバーレイされる独自のウィンドウを使用します。そのスタイルはそれを見えなくしますが、どんな種類のダブルバッファリングも正しく機能するのを妨げます。フォームをダブルバッファリングしても効果はなく、ウィンドウが間違っています。

それ以外の場合は、図形を描画するためのかなり高価な方法です。安価でちらつきのない方法は、フォームのOnPaint()オーバーライドまたはPaintイベントハンドラーでe.Graphics.FillRectangle()を使用することです。

于 2011-07-05T17:06:49.797 に答える
0

ShapeContainerを使用したことはありませんが、そのようなカスタムグラフィックを実行するときは常に、Panelのサブクラスを作成し、サブクラスのコンストラクターでDoubleBufferedをtrueに設定します。

より具体的なコード例はこちら

于 2011-07-05T16:43:45.160 に答える