表示画像を移動するコントロールボタンの処理
最後に、4つのボタンのClickイベントハンドラに、RasterImageViewerコントロールで表示する画像ページを移動する処理を作成します。これらの処理はとても簡単です。
「前のページ」「次のページ」の移動は、Pageプロパティから現在表示されているページ番号を取得し、これを使って再度Pageプロパティに表示するページ番号を作成しセットするだけです。PageCountプロパティを参照すると、読み込んだRasterImageオブジェクトの総ページ数を取得できるため、この値をPageプロパティにセットすれば最後の画像ページを表示します。先頭のページ番号は「1」ですから、これをPageプロパティにセットすれば先頭の画像ページを表示します。
そして、フォームのClosingイベントハンドラで、Shutdownメソッドをアプリケーションが終了する直前に呼び出し、実行します。
Private Sub Pagetop_Click(sender As System.Object, e As System.EventArgs) Handles Pagetop.Click ' 最初のページに移動します。 If (RasterImageViewer1.Image.Page <> 1) Then RasterImageViewer1.Image.Page = 1 End If End Sub Private Sub BeforePage_Click(sender As System.Object, e As System.EventArgs) Handles BeforePage.Click ' 前のページに移動します。 If (RasterImageViewer1.Image.Page > 1) Then RasterImageViewer1.Image.Page = RasterImageViewer1.Image.Page - 1 End If End Sub Private Sub NextPage_Click(sender As System.Object, e As System.EventArgs) Handles NextPage.Click ' 次のページに移動します。 If (RasterImageViewer1.Image.Page < RasterImageViewer1.Image.PageCount) Then RasterImageViewer1.Image.Page = RasterImageViewer1.Image.Page + 1 End If End Sub Private Sub LastPage_Click(sender As System.Object, e As System.EventArgs) Handles LastPage.Click ' 最後のページに移動します。 If (RasterImageViewer1.Image.Page <> RasterImageViewer1.Image.PageCount) Then RasterImageViewer1.Image.Page = RasterImageViewer1.Image.PageCount End If End Sub Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing RasterCodecs.Shutdown() End Sub
private void Pagetop_Click(object sender, EventArgs e) { // 最初のページに移動します。 if (rasterImageViewer1.Image.Page != 1) { rasterImageViewer1.Image.Page = 1; } } private void BeforePage_Click_1(object sender, EventArgs e) { // 前のページに移動します。 if (rasterImageViewer1.Image.Page > 1) { rasterImageViewer1.Image.Page--; } } private void NextPage_Click_1(object sender, EventArgs e) { // 次のページに移動します。 if (rasterImageViewer1.Image.Page < rasterImageViewer1.Image.PageCount) { rasterImageViewer1.Image.Page++; } } private void LastPage_Click_1(object sender, EventArgs e) { // 最後のページに移動します。 if (rasterImageViewer1.Image.Page != rasterImageViewer1.Image.PageCount) { rasterImageViewer1.Image.Page = rasterImageViewer1.Image.PageCount; } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { RasterCodecs.Shutdown(); }
Imports Leadtools Imports Leadtools.Codecs Imports Leadtools.WinForms Public Class Form1 Private MultiTiff_Fname As String = "" Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load ' 入出力ライブラリの起動に必要なデータを初期化します。 RasterCodecs.Startup() End Sub Private Sub 新規作成ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 新規作成ToolStripMenuItem.Click SaveFileDialog1.Filter = "Tiffファイル(*.tif)| *.tif" SaveFileDialog1.FileName = "multi_tiff1.tif" If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then If MessageBox.Show("次のファイル名でマルチTIFFファイルを作成します。" + Environment.NewLine + SaveFileDialog1.FileName, "ファイル作成の確認", _ MessageBoxButtons.OKCancel, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.OK Then MultiTiff_Fname = SaveFileDialog1.FileName Else MessageBox.Show("ファイルの作成を中止しました") End If End If End Sub Private filecount As Integer = 0 Private image As RasterImage = Nothing Private Sub TIFFファイルの追加ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles TIFFファイルの追加ToolStripMenuItem.Click If MultiTiff_Fname = "" Then MessageBox.Show("保存するTiffファイルがありません。新規に作成してください") Exit Sub End If Dim add_tiff_fname As String = "" ' RasterCodecsオブジェクトを初期化します。 Dim codecs As New RasterCodecs OpenFileDialog1.Filter = "Tiffファイル(*.tif)| *.tif" OpenFileDialog1.FileName = "*.tif" If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then add_tiff_fname = OpenFileDialog1.FileName Dim page As RasterImage = codecs.Load(add_tiff_fname) If filecount = 0 Then image = page Else image.AddPage(page) End If filecount += 1 codecs.Save(image, MultiTiff_Fname, RasterImageFormat.Tif, 0, 1, -1, 1, CodecsSavePageMode.Overwrite) ' ビューワをFitモードに設定します。 RasterImageViewer1.SizeMode = RasterPaintSizeMode.Fit ' この画像を表示します。 RasterImageViewer1.Image = image RasterImageViewer1.Image.Page = image.PageCount End If End Sub Private Sub Pagetop_Click(sender As System.Object, e As System.EventArgs) Handles Pagetop.Click ' 最初のページに移動します。 If (RasterImageViewer1.Image.Page <> 1) Then RasterImageViewer1.Image.Page = 1 End If End Sub Private Sub BeforePage_Click(sender As System.Object, e As System.EventArgs) Handles BeforePage.Click ' 前のページに移動します。 If (RasterImageViewer1.Image.Page > 1) Then RasterImageViewer1.Image.Page = RasterImageViewer1.Image.Page - 1 End If End Sub Private Sub NextPage_Click(sender As System.Object, e As System.EventArgs) Handles NextPage.Click ' 次のページに移動します。 If (RasterImageViewer1.Image.Page < RasterImageViewer1.Image.PageCount) Then RasterImageViewer1.Image.Page = RasterImageViewer1.Image.Page + 1 End If End Sub Private Sub LastPage_Click(sender As System.Object, e As System.EventArgs) Handles LastPage.Click ' 最後のページに移動します。 If (RasterImageViewer1.Image.Page <> RasterImageViewer1.Image.PageCount) Then RasterImageViewer1.Image.Page = RasterImageViewer1.Image.PageCount End If End Sub Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing RasterCodecs.Shutdown() End Sub End Class
using Leadtools; using Leadtools.Codecs; using Leadtools.WinForms; namespace Multi_Tiff_cs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // 入出力ライブラリの起動に必要なデータを初期化します。 RasterCodecs.Startup(); } private String MultiTiff_Fname = ""; private void 新規作成ToolStripMenuItem_Click(object sender, EventArgs e) { this.saveFileDialog1.Filter = "Tiffファイル(*.tif)| *.tif"; this.saveFileDialog1.FileName = "multi_tiff1.tif"; if(this.saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if(MessageBox.Show("次のファイル名でマルチTIFFファイルを作成します。" + Environment.NewLine + saveFileDialog1.FileName, "ファイル作成の確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK) { MultiTiff_Fname = saveFileDialog1.FileName; }else { MessageBox.Show("ファイルの作成を中止しました"); } } } private int filecount= 0; private RasterImage image = null; private void tIFFファイルの追加ToolStripMenuItem_Click(object sender, EventArgs e) { if( MultiTiff_Fname == "") { MessageBox.Show("保存するTiffファイルがありません。新規に作成してください"); return; } String add_tiff_fname = ""; // RasterCodecsオブジェクトを初期化します。 RasterCodecs codecs = new RasterCodecs(); openFileDialog1.Filter = "Tiffファイル(*.tif)| *.tif"; openFileDialog1.FileName = "*.tif"; if(openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { add_tiff_fname = openFileDialog1.FileName; RasterImage page= codecs.Load(add_tiff_fname); if(filecount == 0) { image = page; }else { image.AddPage(page); } filecount += 1; codecs.Save(image, MultiTiff_Fname, RasterImageFormat.Tif, 0, 1, -1, 1, CodecsSavePageMode.Overwrite); // ビューワをFitモードに設定します rasterImageViewer1.SizeMode = RasterPaintSizeMode.Fit; // この画像を表示します。 rasterImageViewer1.Image = image; rasterImageViewer1.Image.Page = image.PageCount; } } private void Pagetop_Click(object sender, EventArgs e) { // 最初のページに移動します。 if (rasterImageViewer1.Image.Page != 1) { rasterImageViewer1.Image.Page = 1; } } private void BeforePage_Click_1(object sender, EventArgs e) { // 前のページに移動します。 if (rasterImageViewer1.Image.Page > 1) { rasterImageViewer1.Image.Page--; } } private void NextPage_Click_1(object sender, EventArgs e) { // 次のページに移動します。 if (rasterImageViewer1.Image.Page < rasterImageViewer1.Image.PageCount) { rasterImageViewer1.Image.Page++; } } private void LastPage_Click_1(object sender, EventArgs e) { // 最後のページに移動します。 if (rasterImageViewer1.Image.Page != rasterImageViewer1.Image.PageCount) { rasterImageViewer1.Image.Page = rasterImageViewer1.Image.PageCount; } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { RasterCodecs.Shutdown(); } } }
まとめ
LEADTOOLS 16.5Jはとても機能が豊富で、1回の記事ではすべてを紹介しきれません。画像にコメントを入れたり、画像処理、スキャニング、アノテーション、OCR(光学式文字認識)機能など、画像を中心にドキュメントを作成する際に必要な、Faxや帳票などのビジネス文書の電子ドキュメント化を支援する幅広い機能を自作のアプリケーションに実装できます。
今回は、マルチファイルTiffの作成について紹介しました。次回も引き続き、その豊富な機能を生かしたアプリケーション開発を紹介していきたいと思います。
マルチページTIFFの作成自体は、別エディションのImaging Proシリーズでも可能です。ただし、48、64ビットカラー画像、12、16、32ビットグレースケール画像を使用するには、Document Imagingが必要になります。
詳しい内容を知りたい方は、以下の製品ホームページもご覧ください。