1

パネルに自分のイメージをレンダリングします。

using Microsoft.DirectX.Direct3D;

Device device;

this.device = new Device(0, DeviceType.Hardware, this.panel2,
                CreateFlags.HardwareVertexProcessing, presentationParameters);

その結果、winform を別のフォームに切り替えようとすると、パネルがちらつきます。

シナリオを説明するのが難しいことはわかっています。したがって、ビデオ クリップ (.swf) を Google ドライブにアップロードします。ダウンロードして、ウィンドウ メディア プレーヤーで開いてビデオを視聴することができます。

以下は共有リンクです: https://drive.google.com/file/d/0B6wTfkJvzke_aVJwanVkaU1iSVU/edit?usp=sharing

ビデオ内では、アプリケーションをデバッグ モードで実行しています。次に、タスク バーの [Chrome ブラウザ] タブをクリックして [Chrome ブラウザ] にアクセスします。最小化された [Chrome ブラウザ] が飛び出すと、パネルがちらつきます。その後、「chrome browser」を再度最小化すると、パネルがちらつきました。

この問題は、画面上のパネルの上に他の winform が配置されている場合に発生します。

上記の件について何かコメントはありますか?助けが必要です。

4

1 に答える 1

3

で DirectX を使用すると、同じちらつきの問題に遭遇しましたPanel。OS の描画イベントが自分の描画イベントと衝突していることが判明しました。Panelこれを修正するには、カスタム パネルを作成して OS の描画を無効にする必要があります。これと同じくらい簡単なもので十分です。

class Direct3DPanel : Panel
{
    public Direct3DPanel()
    {
        this.SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);
    }
}

メソッド呼び出しは、あなたSetStyleだけが を描画するよう OS に伝えますDirect3DPanel。これを行うと、すべての描画を担当することに注意してください。Paint現在のアーキテクチャによっては、イベントを処理して描画ロジックを呼び出す必要がある場合があります。

ControlStylesここ でさまざまな詳細情報を取得できますhttp://msdn.microsoft.com/en-us/library/system.windows.forms.controlstyles(v=vs.110).aspx

于 2013-11-07T17:22:20.097 に答える