2

WPFで.DLLを作成しました。既存のWindowsフォームアプリケーションで使用するには、を使用しますElementHost

ElementHost eleHOst = new ElementHost();
UserWarps userWarps = new UserWarps();
eleHOst.Child = userWarps;
eleHOst.Dock = DockStyle.Fill;

UserWarps.DLL追加参照されたWPFにあります。これで、ファイルは多くの3D操作を実行します。ワイヤーフレームモデリングにも使用Petzold.Media3Dしています。線を引いていない3D linesことを除いて、すべてが正常WireLinesに機能しています。Petzold.Media3D他のアプリケーションからDLLを参照する場合はWPFすべて問題ありませんが、WindowsフォームでUserControlをホストするとwpf、ライン/ワイヤーフレームが削除されます。残りはすべて完璧です- MeshGeometry3D、モデル、ビジュアル、機能など。

今後の方向性を提案してください。ElementHost仕事に代わるものはありますか?もしそうなら、それは何ですか?

4

1 に答える 1

1

そのためだけにこの質問を閉じたくないので、OPによって最初に質問に追加された回答を追加します。

Petzold はここで、Windows フォームで wpf をホストするとワイヤ フレームが消えると述べています。彼はまた、非常にシンプルで完璧に機能する回避策を投稿しています。

注: 段落 5 で説明した理由により、Windows フォームで 3D をホストしている場合、または 3D シーンを印刷しようとしている場合、これらの Wire クラスは機能しません。OnRendering機能させるには、WireBaseの静的メソッドを次のように置き換えてみてください 。

static void OnRendering(object sender, EventArgs args)
{
    foreach (WireBaseAndUltimateParent wirebaseAndParent in listWireBases)
    {
        WireBase wirebase = wirebaseAndParent.wirebase;
        wirebase.OnRendering();
    }
}
于 2012-12-04T13:40:21.777 に答える