2

TTreeViewイベントのAdvancedCustomDrawイベントを次のようにリッスンする場合:

if Stage = cdPrePaint then begin
    // modify some Sender.Canvas properties and let it draw itself
end else if Stage = cdPostPaint then begin
    // draw 'something extra' using a separate TControlCanvas
    TControlCanvas.TextOut(SomeRect, 'Hello');
end;

... DoubleBufferedを有効にすると、コントロールは「何か余分なもの」をオフスクリーンバッファにコピーしないことを決定したようです。これは、問題のウィンドウを邪魔しない限り、すべてが問題ないことを意味します。私がそうするとき、「何か余分なもの」はウィンドウのランダムな部分にのみ表示されます。

ここで何が欠けていますか?

4

1 に答える 1

4

あなたのコメントは私に別の解決策を提案するためのカルテブランシュを与えたので、これが私がすることです:

  1. の使用を停止しDoubleBufferedます。それは多くのコントロールで多くの視覚的な奇妙さをもたらします。私は個人的に疫病のようにそれを避けます。
  2. WS_EX_COMPOSITEDコントロールに拡張ウィンドウスタイルを追加して、ちらつきの問題を解決します。このウィンドウスタイルは、パフォーマンスを少し低下させる可能性があります。これは、必要なときにサイジングループ中にのみ追加することをお勧めします。私はここで私の答えでそれを行う方法を説明します:サイズ変更時にTLabelとTGroupboxのキャプションがちらつきます。
于 2013-02-02T21:31:08.440 に答える