4D-jp 4D Japan Technical Support Team

Direct2Dを有効にするべき理由


Windows版の4Dは,フォームの表示と印刷に Direct2D テクノロジーを使用していますが,互換性のために残されているGDI/GDI+ レンダリングモードも限定的にサポートされています。

Direct2Dのサポート

4D 13では,SVGレンダリングエンジンにDirect2D が採用されました。SVG要素の4D-enableD2D属性を指定することで,SVGレンダリングエンジンを切り替えることができます。SVGフィルターは,Direct2D モードでなければ表現されません。

4D 13では,テキストを除くグラフィック処理にDirect2D が採用されました。さらに,Windows XP/VistaのレンダリングをWindows 7でデバッグするためのデータベースパラメーター69 Direct2D status が用意されました。

4D 16では,リストボックスのテキストレンダリングがDirectWrite に対応しました。4D 15以前に作成されたリストボックスは,互換性のために残されているGDI/GDI+ モードで描画されるのに対し,4D 16以降に作成されたリストボックスは,DirectWrite モードでテキストが描画されます。強制的に切り替わらないのは,DirectWriteGDI/GDI+ ではテキストのレンダリング処理が違っているためです。リストボックスのテキストレンダリングモードは,データベースパラメーター107 (ドキュメント非掲載)で切り替えることができます。

4D 16では,印刷にもDirectWrite が採用されています。また,旧式プリントレイヤーを使用しなければならない特殊な状況のためにLegacy printing layer option が用意されました。

4D 20では,アプリケーション全体のテキストレンダリングがDirectWrite に対応し,高解像度ディスプレイでテキストがシャープに描画されるようになりました。4D 19以前に作成されたプロジェクトは,互換性のために残されているGDI/GDI+ モードが使用されますが,データベース設定の「互換性」ページでDirectWrite を有効化することができます。設定はSettings フォルダー内のsettings.4DSettings ファイルに書き込まれます。

DirectWriteを使用したWindows上のフォームにおける新しいテキストレンダリング

Direct2Dのメリット

Direct2D のレンダリングは,グラフィックスカードが対応していれば,ハードウェアアクセラレーションが適用されるため,GDI/GDI+ よりもパフォーマンスが優れています。アンチエイリアス処理や,ガウシアンぼかしなどのSVGのフィルターなどにも対応しています。

リモートデスクトップ環境での描画速度も大幅に改善されます。Windows 7以降のRDPプロトコルはDirect2Dをサポートしているため,従来のようにローカルにビットマップをレンダリングして各端末に送信するのではなく,必要に応じてプリミティブの描画命令を送信し,各端末に描画させることができるためです。

4D Write Pro を使用するためにはDirectWrite モードを有効にしなければなりません。歴史的な経緯により,GDI/GDI+ モードにフォールバックする仕組みがありますが,正式にサポートされているわけではない点に留意する必要があります。

Direct2D のレンダリングは,過去バージョンのGDI/GDI+ とまったく同じではないため,フォームオブジェクトのサイズや,テキストのフォント名などを調整する必要があるかもしれません。互換性を重視したいデベロッパーのためにGDI/GDI+ レンダリングモードも残されていますが,高解像度ディスプレイに対応し,最高品質の印刷と描画を実現できるのはDirect2D レンダリングモードです。


関連記事

リンク