.NET Compact Framework のグラフィックスのプログラミング
更新 : 2007 年 11 月
.NET Compact Framework を使用すると、堅牢で、視覚効果の高いアプリケーションを作成できます。また、プラットフォーム呼び出しを使用することにより、ネイティブ コードで特殊効果を得ることもできます。.NET Compact Framework version 2.0 およびそれ以降のバージョンでは、Direct3D アプリケーションをプログラミングできます。.NET Compact Framework における DirectX および Direct3D の詳細については、「Windows Mobile DirectX および Direct3D」を参照してください。
.NET Compact Framework でグラフィック オブジェクトをプログラミングするときは、次の点を考慮する必要があります。
.NET Compact Framework は、GDI+ をサポートしていません。複雑な描画、塗りつぶし、および変形操作を実行する Graphics クラス メソッドの一部はサポートされていません。パス、円弧、2-D、および 3-D はサポートされていません。
ただし、.NET Compact Framework では、中心的な描画プリミティブおよび対応する塗りつぶしメソッド (楕円、直線、イメージ、多角形、四角形、線、領域) はサポートされています。
高解像度アプリケーション用のコードを作成できます。高解像度の詳細については、「方法 : 画面の向きと解像度を変更する」を参照してください。
カラーキー透過だけがサポートされています。アルファ ブレンド、つまりソースと背景色データとのピクセル単位でのブレンドはサポートされていません。このため、SetColorKey メソッドの colorLow パラメータと colorHigh パラメータは、同じ色であることが必要です。
.NET Compact Framework と .NET Framework では、既知の色との比較方法が異なります。.NET Compact Framework では、Aquamarine などの既知の色を、Aquamarine と同じ RGB 値を持つ色と比較すると、その結果は同じになります。.NET Framework では、これらの色を別のものとして評価します。既知の色には、RGB 値以外に ID 情報も含まれるためです。
.NET Compact Framework では、既存の Font オブジェクトを使用する Font クラスのコンストラクタはサポートされません。
CreateGraphics メソッドは、Form オブジェクトまたは Control オブジェクトだけで使用できます。
イメージの読み込みに失敗する場合は、imgdecmp.dll がデバイスの Windows ディレクトリに存在することを確認してください。
Icon の Clone メソッドおよび FromHandle メソッドは、Windows Mobile 5.0 が実行されているデバイスで有効です。.NET Compact Framework では、高解像度アイコンはサポートされますが、ハイ カラー アイコンはサポートされません。
.NET Compact Framework では、グラデーション ブラシはサポートされていません。ただし、ネイティブ関数との相互運用でグラデーションを表現できます。例については、「方法 : グラデーションの塗りつぶしを表示する」を参照してください。
描画速度の向上
Graphics オブジェクトの使用時に描画パフォーマンスを向上させる方法について、次のコード例に示します。
Graphics オブジェクトを 1 つだけ作成するか、OnPaint メソッドで PaintEventArgs からのオブジェクトを使用します。
オフスクリーン ビットマップに描画してから、ビットマップを描画して一度にすべてを表示します。コード例については、「方法 : イメージをオフスクリーンに描画する」を参照してください。
イメージの中で変更された部分だけを再描画します。
ソース サイズと同じ目的サイズで描画します。可能な限り、伸縮しないようにしてください。
再描画する必要がある項目を追跡することにより、描画数を最小限に抑えます。たとえば、イメージを横切ってカーソルをドラッグするときに、イメージ全体を再描画する必要はありません。イメージのうち、直前にカーソルが置かれて上書きされた部分だけを再描画します。