SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(LEADTOOLS)

「LEADTOOLS」を使ってWindowsストアアプリに画像処理機能を実装しよう

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

ViewModelの定義(MainViewModel)

 PictureModelとMainPage.xamlを結合するためのViewModelは、次のようになります。

リスト3 PictureModel.vb
Public Class MainViewModel
    Implements INotifyPropertyChanged
 
    Private WithEvents Model As New PictureModel              ' …
 
    Public Property ImageElement As ImageSource
        Get
            Return Me.Model.ImageElement
        End Get
        Set(value As ImageSource)
            Me.Model.ImageElement = value
        End Set
    End Property
 
    Public Property RasterElement As Leadtools.RasterImage    ' …
        Get
            Return Me.Model.RasterElement
        End Get
        Set(value As Leadtools.RasterImage)
            Me.Model.RasterElement = value
        End Set
    End Property
 
    Public Async Sub Open()
        Await Me.Model.Open
    End Sub
 
    Private _OpenCommand As Common.RelayCommand
    Public Property OpenCommand As Common.RelayCommand        ' …
        Get
            If Me._OpenCommand Is Nothing Then
                Me._OpenCommand = New Common.RelayCommand(AddressOf Open)
            End If
            Return Me._OpenCommand
        End Get
        Set(value As Common.RelayCommand)
            Me._OpenCommand = value
        End Set
    End Property
 
    Public Event PropertyChanged(sender As Object,
                                 e As PropertyChangedEventArgs) _
                             Implements INotifyPropertyChanged.PropertyChanged
    Private Sub OnPropertyChanged(<CallerMemberName> Optional propertyName As String = Nothing)
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
    End Sub
 
    Private Sub Model_PropertyChanged(sender As Object,
                                      e As PropertyChangedEventArgs) _
                                  Handles Model.PropertyChanged
        OnPropertyChanged(e.PropertyName)
    End Sub
End Class
  • PicureModelクラスをイベント検出付きで宣言
  • ラスターイメージを伝搬するためのパブリックプロパティを定義
  • ファイル読み込むのメソッドを呼び出すためのコマンドプロパティを定義

 また、MainViewModelをページ間での共通ViewModelとするために、App.xaml.vbの先頭に次のようなコードを記述しておきます。

リスト4 App.xaml.vb
NotInheritable Class App
    Inherits Application
 
    Public Shared ReadOnly Property MainVM As MainViewModel
        Get
            If _MainVM Is Nothing Then
                _MainVM = New MainViewModel
            End If
            Return _MainVM
        End Get
    End Property
    Private Shared _MainVM As MainViewModel = Nothing
            :
          (略)
            :

XAMLのコードビハインド定義

 MainPage.xamlのコードビハインド側であるMainPage.xaml.vbには自動生成されたコードがあるので、コンストラクタである「Public Sub New()」の最後に次の1行を追加します。

リスト5 コンストラクタへの追記
Me.DataContext = App.MainVM

画像ライブラリを利用可能にする

 今回のサンプルでは、画像ライブラリにある画像の表示のために、マニフェストファイルには「画像ライブラリ」機能を宣言します。

図9 機能の宣言
図9 機能の宣言

次のページ
実行結果

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(LEADTOOLS)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7610 2016/03/14 11:39

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング