Category Archives: vb.net - Page 16

印刷と保存example [Chapter 8-1]

印刷と保存example

[Chapter 8]では、labelやcategoryを設定してもアプリケーションを終了すると初期状態にresetされないように、操作状態の保存と再度呼び出し表示するcodeを追加していきます。

属性テーブルの表示example [Capter 7-4]のex074に追加していきます。

Program開発環境は、Visual Basic.NET 2010です。
Visual Sutdioの使い方は、一通り問題なく操作でき、一度はGUIのprogramを作成したことがある中級者を対象にしています。 したがって、vb.netの操作に関しては、端折ります。

Program Coding

まずは、From designをして、Codingします。

Form Design

Form designはiconを使ってtoolbarにsettingします。
こんな感じ、
blog.godo-tys.jp_wp-content_gallery_mapwingis_ex08_image01.jpg
Form Design

AxMap1のプロパティの変更
CursorMode → cmNone
MapUnits → umDecimalDegrees (サンプルの神奈川県のshape fileがJGD2000世界測地系)
SendMouseDown → True
SendMouseMove → True
SendMouseUp → false

ここで、mouse eventを利用するには、必ずSendMouse~~をtrueにしてください。falseではeventを捕まえることができません。

Coding

ToolStrip1

gis projectの読み込みと保存の追加
blog.godo-tys.jp_wp-content_gallery_mapwingis_ex08_image02.jpg
ToolStrip1
Add Layersとremove Layerもiconに変更しています。
まずは、GIS Projectの保存から始めます。

Projrctの保存

現在の操作・表示状態を保存します。
ここで、保存するファイルの拡張子は(gis)としていますが、お好きな拡張子に変更しても構いません。
Project保存buttonのClick時のCodeは、

    Private Sub ToolStripButton6_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton6.Click
        Dim saveDialog As New SaveFileDialog()
        saveDialog.Filter = "Project files (*.gis)|*.gis"
        saveDialog.FilterIndex = 2
        saveDialog.RestoreDirectory = True
        If saveDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            Legend1.Map.SaveMapState(saveDialog.FileName, True, True)
        End If
 
    End Sub

save Dialogを表示してファイル名を選択して保存。
Legend1.Map.SaveMapState(saveDialog.FileName, True, True)が操作・表示状態の保存statementになります。
次に、Porjectを呼び出すcodeを付け加えます。

Projrctの読み込み

呼び出すファイルは、Projectの保存での拡張子(gis)のみにしてから、呼び込みます。
Project読み込みbuttonのClick時のCodeは、

    Private Sub ToolStripButton5_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton5.Click
        Dim openDialog As New OpenFileDialog()
        Dim cBack As Object = Nothing
 
        openDialog.Filter = "Project files (*.gis)|*.gis"
        openDialog.FilterIndex = 2
        openDialog.RestoreDirectory = True
        If openDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            Legend1.Map.LoadMapState(openDialog.FileName, cBack)
        End If
    End Sub

Open Dialogを表示してファイル名を選択して開きます。
Legend1.Map.LoadMapState(openDialog.FileName, cBack)が操作・表示状態の読み込みstatementになります。
これでOKです。

Programの実行

ex08のprojectを保存後、実行してみましょう。

今回は、神奈川県のサンプルを読み込んで表示させます。保存状態を確認するためにlayerの色を変えます。
blog.godo-tys.jp_wp-content_gallery_mapwingis_ex08_image03.jpg
神奈川県のサンプルshape file表示

Project保存buttonをクリックして、test.gisにMapstateを保存します。
blog.godo-tys.jp_wp-content_gallery_mapwingis_ex08_image04.jpg
Project保存のDialog表示画面

ここで、一度プログラムを終了して、再度実行させます。そうしないと、Legend control内のLayer情報がなくなってしまします。試してみるもの良いですね。

Project読み込みbuttonをクリックして、test.gisを読み込みます。
blog.godo-tys.jp_wp-content_gallery_mapwingis_ex08_image05.jpg
Project読み込みのDialog表示画面

Project読み込みbuttonをクリックして、test.gisを読み込んだ後の表示状態です。
blog.godo-tys.jp_wp-content_gallery_mapwingis_ex08_image06.jpg
test.gisを読み込んだ後の表示例

Map Controlのみが表示されて、Legend ControlにLayer情報が作成されていませんね。表示させるには、Exerciseとしますので、Codeingの追加をやってください。

今回のまとめ

では、今回のまとめを

  1. MapStateの保存と読み込みの実装を行いました。

次回[Chapter 8-2]では、簡単なMapの印刷の実装をやってみたいと考えています。

vb.net2010だけでなく、C#でも、visual studio2008でも動作することができます。
簡単に自前のソフトウェアにちょっとしたGIS機能を付け加えるには良いと思います。
ex08のsource codeを公開しますので、活用してください。
ただし、あくまでの自分用のサンプルですので、バグなどがある可能性が高いので、原文のままの使用は避けてください。

サンプルコードおよびサンプルデータを使って、お使いのPCの不具合が生じても一切責任は持てませんので、あくまでも自己責任にて使用してください。

Exercise

今回のProgramを少し発展させて以下の項目を付け加えてみてください。

  1. Project呼び出し時にlegend ControlにもLoadMapState状態を表示されるように追加する。
  2. Programを終了することなく、Projectの読み込みができるように修正する。

Social Widgets powered by AB-WebLog.com.