Vistaが最初に出荷され、WPFがバージョン3.0になったとき、組み込みの拡大鏡を使用してズームすると、実際にベクトルベースのスケーリングが行われます。
これは、WPF 3.5サービスパック1が出荷されたときに機能しなくなりました。 (それはsp1の前に3.5で働いていました)。それ以前に働いた理由は、DWM(デスクトップウィンドウマネージャー) - 画面上に表示されているものすべてを表示するWindowsの一部です - MILCORE.DLLを使用してレンダリングします。 WPFのバージョン3.0と3.5もこの同じコンポーネントをレンダリングに使用しました。つまり、すべてのWPFコンテンツはネイティブコンテンツでした。 (実際、DWMを持たないWindows XPでは、MILCORE.DLLはWPFがあなた自身の利益のためにあなたのシステムに置くものですが、VistaとWindows 7に組み込まれています。)WPFがMILCORE.DLLを使ってVista上でレンダリングすると、スケーリングなどのDWMによって適用されるエフェクトもWPFにも適用されます。実際にピクセル化することなくスケールしました。
残念ながら、これはもはやケースではありません。その理由は、WPFが新しいレンダリング機能を追加し始めたからです。 3.5 SP1では、問題の新機能はカスタムピクセルシェーダーのサポートでした。それを可能にするために、マイクロソフトはMILへのアップデートをリリースしなければならなかった。 (Media Integration Layer - 実際のレンダリングを行うビットです)しかし、MILCORE.DLLを更新する立場にはありませんでした。これはWindowsの一部です。画面上に表示されるすべてのものが画面に表示される方法です。 MILCORE.DLLの新しいバージョンをリリースすることは、Windowsへのアップデートを効果的に実行することを意味します。 Windowsのリリーススケジュールは.NETのリリーススケジュールとは無関係であるため、WPFチームが新しい機能を合理的に追加できる唯一の方法は、新しいMILを出荷することでした。 (理論的には、Windows Updateを使用している可能性がありますが、WPFはWindowsとは別の部門のMicrosoftによって所有されているため、この種のことは実際には起こりそうにありません)。
.NET 3.5 sp1の場合、MILはwpf_gfx_vXXXX.dllという別のDLLにあります。ここで、vXXXXはバージョン番号です。 .NET 4.0では、wpf_gfx_v0400.dllです。
WPFは、Windows自体を更新することなく、新しいバージョンごとに新しいレンダリング機能を追加できるという点があります。欠点は、WPFのレンダリングは、Vistaが出荷されたときに一時的に戻っていたため、Windowsと密接に統合されていないことです。あなたが見てきたように、その拡大はそれまでと同じほど楽しいものではありません。
うわー、そのような完全な答え!よくやってくれてありがとう! – Boris
非常に徹底的な答え、+1!驚くべきことですが、驚くべき機能でした。私は、OSレベルの各ウィンドウごとにズームを別々に変えることができたと思っていました。 –
私は実際にグリフィス氏のPluralsightビデオから、Vista上で拡大鏡を再現したことを実感しましたが、Windows 10ではうまくいきませんでした.Ian自身がStackOverflowでアップデートを見つけました。 –