SHOEISHA iD

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

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

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

「LEADTOOLS 16.5J」を使って、高速な画像処理を味わおう

LEADTOOLS 16.5J Imaging Pro Suite SP3を使った画像ビューワアプリの作成

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

サンプルアプリケーションの作成

WPFアプリケーションの新規作成

 Visual Studioの[ファイル]-[新しいプロジェクト]より、[Windows]-[WPFアプリケーション]を選択します。

図2 新規プロジェクト作成
図2 新規プロジェクト作成

画面デザイン

 WPFのGRIDレイアウトを使って、左から順にLEADTOOLSのImageList、標準コントロールのGridSplitter、LEADTOOLSのBitmapSourceViewerを配置します。

図3 画面デザイン
図3 画面デザイン

 この画面デザインを、XAML表示で見てみましょう。

リスト 1 XAMLの例
<Window xmlns:my="clr-namespace:Leadtools.Windows.Controls;assembly=Leadtools.Windows.Controls"  x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition  />
            <ColumnDefinition  />
        </Grid.ColumnDefinitions>
        <my:ImageList Name="CZ1107_ImageList" Grid.Row="0" Grid.Column="0" />
        <GridSplitter  Grid.Row="0" Width="2" Background="#FF0A1C58"></GridSplitter>
        <my:BitmapSourceViewer Grid.Row="0" Grid.Column="1" SizeMode="Fit" />
    </Grid>
</Window>

 XAMLで表示してみると、LEADTOOLSがどのように定義されているかが分かりやすいと思います。

  1. Windowタグの属性としてLEADTOOLSコントロールの場合の接頭語を「my」と定義
  2. Gridレイアウトを使って1行3列の配置を定義
  3. 左のカラムにImageListを配置
  4. 中央のカラムにGridSplitterを配置し、背景色を変更
  5. 右のカラムにBitmapSourceViewerを配置

一覧表示と画像表示

 Windowsフォームなどではプログラミングが必要となる「ImageListで選択した画像をBitmapSourceViewerに表示する」という操作を実装してみます。

 BitmapSourceViewerのタグの内容に「Source="{Binding ElementName=CZ1107_ImageList, Path=SelectedItem.Image}"」を追記し、Sourceプロパティを指定します。この記述により、BitmapSourceViewerのSourceプロパティの値が常にImageListのSelectedItem.Imageの値と連携するようになります。

一覧表示用コードの記述

 続いて、ImageListにマイピクチャの内容を一覧で表示してみたいと思います。[表示]-[コード]メニューでコードウィンドウを表示して、Loadイベントのプロシージャでマイピクチャフォルダの画像をImageListに追加するコードを記述します。

リスト 2 コードの例
Imports Leadtools.Windows.Controls

Class MainWindow

    Private Sub MainWindow_Loaded(sender As Object,
                                  e As System.Windows.RoutedEventArgs) Handles Me.Loaded
        Dim folder As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
        Dim files As String() = System.IO.Directory.GetFiles(folder,
                                                             "*",
                                                      System.IO.SearchOption.TopDirectoryOnly)

        For Each file As String In files
            Call Browse(file)
        Next
    End Sub

    Sub Browse(ByVal fileName As String)
        Try
            Dim source As BitmapSource = New BitmapImage(New Uri(fileName))
            Dim item As ImageListItem = New ImageListItem(source,
                                                         System.IO.Path.GetFileName(fileName))
            item.Focusable = True
            Me.CZ1107_ImageList.Items.Add(item)
        Catch ex As Exception
        End Try
    End Sub
End Class
  1. System.Environment.GetFolderPathで、マイピクチャのフォルダ位置を取得
  2. Browseプロシージャで、フォルダ内のファイルを1つづつImageListのItemsに追加

実行

図4 実行結果
図4 実行結果

 たったこれだけの量のコーディングで「イメージリストから選択したイメージを表示する」という要求を満たすプログラムが完成しました。

次のページ
パンウインドウ機能を実装する

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

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

もっと読む

この記事の著者

初音玲(ハツネアキラ)

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6063 2011/10/13 16:47

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング