SharpDXを利用して、DotSpatialの図形描画

DotSpatialの図形の描画は、Windows Formsアプリケーションで標準で利用されているGDI+が利用されています。ただし、GDI+は、基本的な2D処理のAPIのみで構成されているため、ハードウェアを抽象化するためゲームのような高速な画像処理には適していません。

そこで、画像描画性能を向上させるために登場したのが、DirectXです。DirectX は Windows や Xbox 360 などで使える、ゲームやマルチメディアなどの高速な描画が要求されるアプリケーション開発に用いられる API で、描画の計算を CPU ではなく、GPU によって処理されます。GPU は CPU とは異なり、並列処理に特化したアーキテクチャになっており、画像処理が高速化されます。

ただし、DirectX は C++ で書かれているネイティブの API であり .NET Framework ではありません。そのままの状態では C# から利用することはできませんでしたが、最近は便利な世の中になっており、DirectXをC#でも利用できるよう、ラッパーライブラリが出ています。

今回は、DirectXでもメジャーなライブラリであるSharpDxを利用して、DotSpatialの図形の描画を行いました。

1.描画の比較

GDI+で描画した場合

以下の画面イメージは、従来のDotSpatialを利用して、三豊市の市町村界をラインで表示したものですが、最小ライン幅が1pxまでしか表現できませんした。なんか不細工です。

SharpDXで描画した場合

一方、SharpDxを使用して描画した場合は、最小ライン幅が1px以下でも設定可能になる(以下は0.2px)ため、繊細な表現が可能になります。

さらに、SharpDxでは、svgファイルの表示や3Dの表示も可能になるので、今後のGIS開発では必須のライブラリともいえます。

2.事前準備

まず最初に、SharpDxを入手します。SharpDxのサイトからDLして、.Net4.5.1でビルドしました。
今回は3D等は利用しないので、以下のライブラリを参照に追加しました。
・SharpDX.Desktop.dll
・SharpDX.Direct2D1.dll
・SharpDX.dll
・SharpDX.DXGI.dll
・SharpDX.Mathematics.dll

3.修正箇所

今回のSharpDxを利用した、DotSpatialの修正個所配下の通りです。修正個所が多いため、抜粋しています。

Map.cs

MapFrame.cs

MapLineLayer.cs

Stroke.cs

Print Friendly, PDF & Email

シェアする

  • このエントリーをはてなブックマークに追加

フォローする