3DアプリケーションでWinforms(そして最終的にはHostElement経由のWPF)を使用するために、SharpDXプロジェクトにWinformsを統合しようとしています。Winformsコントロールのペイントメソッドをオーバーライドして、テクスチャにペイントする方法を教えてください。
:
は、私が作成したり、コントロールを設定したり、私ができるような形態にする必要があります。それをテクスチャにレンダリングします(スプライトとして表示することができます*)
b。コントロールがアクティブでないときにマウス/キーボードイベントを取り除くためにその入力をフィルタリングします。
私はOnPaintとOnPaintBackgroundをオーバーライドするためにControlとFormのサブクラス化を試みましたが、これらは子コントロールには影響しません - フォームの境界線についても(そして、まだ「親」が描かれていると思われる白い四角で残っています)。
コントロールまたはフォームのペイントを画面に停止し、代わりにビットマップのみを描画できますか?(例えば、ツリーが描画される前にGraphicsをオーバーライドできる方法はありますか?)
*これはWinformsがサポートしていないので、このようにする必要があります本当の透明性があるので、ピクセルシェーダでカラーコード化されたピクセルをクリップする必要があります。
(私は特にDirectXのテクスチャを意味するものではありません、確認するために - 私はと満足しています(実際には)簡単なたSystem.Drawingビットマップを好む)
明示的に呼び出すInvokePaintは素晴らしい作品とそのは今私のテクスチャへのレンダリング、ありがとうございました! – sebf
"DrawToBitmap"を使用することもできます。私はこれがコントロールから派生する必要性を避けるだろうと思う。 btnTarget.DrawToBitmap(img、新しい矩形(新しいポイント(0,0)、新しいサイズ(100,100)); – chrispepper1989