ここに私の質問の要約があります:カスタム コントロールで、親がその子コントロールを背景画像にペイント/bitblt する方法はありますか?
詳細:
(コンパクト フレームワークで) 独自のダブル バッファリングを実行しようとしていますが、多くの問題が発生しています。かなり複雑なユーザー コントロールがあります。Panel
スクロールPanel
(可変サイズ)のあるビュー(固定サイズ)があります。巻物Panel
には数枚のカードPanels
が入っています。カードパネルは縦に重ねて2枚DataGrids
と2枚入っていLabels
ます。
これが私のコントロールの視覚的な概要です
ビュー パネル | | +--> スクロール パネル | | +---> カードパネル | | | | | | +--> ラベル | | +--> ラベル | | +--> データ グリッド | | +--> データ グリッド | | +---> カードパネル | | | | | | +--> ラベル | | +--> ラベル | | +--> データ グリッド | | +--> データ グリッド (...)
では、問題に移ります。スクロール パネルのオン ペイントをオーバーライドし、bitblt を実行して画像を「カスタム ペインティング」として表示します。画像を保存してテストしましたが、まさに私が望んでいるものです。
問題は、データグリッドとラベルがまだ通常の描画を行っていることです。そのため、スクロールするとアーティファクトが残ります。そこで、OnPaint をオーバーライドして、グリッドとラベルに対して何もしないようにします。しかし、それを行うと、bitblt はもうグリッドをピックアップしません (しかし、奇妙なことに、まだラベルをピックアップしています)。
では、カスタム コントロールで、子コントロールを背景画像に親ペイント/bitblt する方法はありますが、子コントロールが実際にコントロールをペイントする方法はありますか?
注: 私の完全なコードに興味がある場合は、ここで見ることができます。