SHOEISHA iD

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

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

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

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

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

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

パンウインドウ機能を実装する

 画像系アプリでよくあるデザインとして、画像の全体図と部分表示が同時に表示されていて、全体図には部分表示がどこを拡大して表示しているのか、という領域がマークされているものがあります。もちろん、部分表示とマークは連動して動作します。このようなデザインもLEADTOOLSの得意とするところです。

画面デザイン

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

リスト 3 XAMLの例
<Window 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" 
        xmlns:my="clr-namespace:Leadtools.Windows.Controls;assembly=Leadtools.Windows.Controls">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition  />
            <ColumnDefinition  />
        </Grid.ColumnDefinitions>
        <my:BitmapSourceViewer Name="CZ1107_BitmapSourceViewer" Width="Auto" Height="Auto" />
        <GridSplitter  Grid.Row="0" Width="2" Background="#FF0A1C58"></GridSplitter>
        <my:ImagePanViewer Grid.Row="0" Grid.Column="1" Name="CZ1107_ImagePanViewer"
                            Width="Auto" Height="Auto" 
                           Source="{Binding ElementName=CZ1107_BitmapSourceViewer}"/>
    </Grid>
</Window>

 XAMLの記述で注目すべき点は、BitmapSourceViewerとImagePanViewerの間でBindingが設定されている点でしょう。これだけの記述により、ImagePanViewer側に表示した全体図の上にBitmapSourceViewerに表示されている部分がどこなのかを示すマークが自動的に表示できます。

コード記述

 今回のサンプルに必要なコードを見てみましょう。

リスト 4 コードの例
Class MainWindow 

    Private Sub MainWindow_Loaded(sender As Object,
                                  e As System.Windows.RoutedEventArgs) Handles Me.Loaded
        Dim fileName As String = System.IO.Path.Combine(My.Application.Info.DirectoryPath,
                                                        "IMG_0002.JPG")
        Me.CZ1107_BitmapSourceViewer.Source = New BitmapImage(New Uri(fileName))
    End Sub
End Class

 結論から言えば「全体図に部分表示マークを示す」のに必要なコードはありません。XAML上の記述ですべて実現しています。そのためリスト4のコードで記述しているのは、画像を読み込む機能だけになります。

実行

図5 実行結果
図5 実行結果

 画面サイズを変更すると、部分表示のサイズもそれと連動して変化します。そして、部分表示のサイズが変更されると全体表示上のマーク部分も変わります。全体表示上でマークを動かせば部分表示している部分も変わります。

 このような「普通にそうあって欲しいUI」が、XAML側での最小の記述のみで実現できるのがXAML+LEADTOOLSといえるのではないでしょうか。

最後に

 WPFは画像の取り扱いが比較的得意なので、LEADTOOLSを導入してもプログラミング効率や機能的に代わり映えはしないのではないかと当初は思っていました。

 しかし、豊富な対応画像フォーマットや便利なコントロールにより、WPFでもLEADTOOLSの恩恵に与れることが分かりました。今回は評価の対象としませんでしたが、ネイティブ関数を使った場合のパフォーマンスも期待が持てるところです。

 画像系アプリを作成する際には、一歩上を行く柔軟性を持ったUIを実装するためにも、LEADTOOLSの機能を調べ、サンプルを試してみることをお勧めします。

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング