5

WPF は内部で DirectX を使用してレンダリングを実行し、WinForms がコントロールのレンダリングに使用する恐竜ライブラリに依存していないことを読みました。

そこで、WPF を使用してプレゼンテーション レイヤーを作成しました。これは、Win8 で本来あるべき姿に見えます。

次に、このプロジェクトを Windows Server 2003 に展開しました...私の素敵な小さなカスタム メッセージ ボックスが、ひどく WinForms に似ていて、やや不格好であることがわかりました。ボタン コントロールは WinForms のものと非常によく似ており、エキスパンダー コントロールは円で囲まれた^矢印として表示されなくなり、1998 年に描かれたように見え^ます (マウスをホバーするとポップアップする醜い正方形の平らなボタンの矢印を想像してください)。 .

C# 2010バイブルの Pro WPF から:

WPF の約束の 1 つは、特定のハードウェアの詳細や特異性について心配する必要がないことです。WPF は、可能な場合はハードウェアの最適化を使用するのに十分なほどインテリジェントですが、すべてに対してソフトウェアのフォールバックがあります。そのため、従来のビデオ カードを搭載したコンピューターで WPF アプリケーションを実行しても、インターフェイスは設計どおりに表示されます

それで、これは嘘ですか?私にはそうです。なぜなら、私が設計したようには見えないからです。

そうでない場合、それを実行しているマシンに関係なく、なぜ/どのように同じようにレンダリングされないのですか? ソフトウェア フォールバックは、Win32/GDI レンダリングを模倣するように設計されていますか? 私の小さなカスタム メッセージ ボックスを Win8 と WinServer2K3 で同じように表示する方法はありますか?

4

1 に答える 1

4

これは、DirectX/レンダリング/ビデオカード/そのいずれとも関係ありません。

WindowsテーマからすべてのUI要素のデフォルトの外観を取得するWPFに関係するすべて。

この動作が望ましくない場合は、すべての UI 要素タイプに対してStylesとを提供するか、アプリケーションに含めてデフォルトのテーマ ライブラリとして使用するTemplates方法を見つける必要があります。PresentationFramework.Aero.dll

この答えを見てください

于 2013-05-01T19:53:27.227 に答える