CodeZine(コードジン)

特集ページ一覧

自作プログラムに拡大鏡機能やエンボスなどの特殊効果を実装する

LEADTOOLS 14.0J Raster Imaging Proを使った画像処理プログラムの作成 第2回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/07/16 00:00

 LeadMainコントロールが持っている多彩な機能を利用して、前回解説したプログラムに、マウスで選択した範囲を中心に画像を拡大する機能、拡大鏡を使って画像の一部を拡大する機能、別フォームを使ってエンボスやポスタライズという画像処理を施す機能を追加します。

目次
完成画面
完成画面

はじめに

 前回は、「LEADTOOLS 14.0J Raster Imaging Pro」のコンポーネントの1つ、Lead Mainコントロールを使って、画像にズーム、モザイク、コントラスト調整、ブレを施す画像処理プログラムをVisual Basic 6.0(以降、VB 6.0)で作成しました。今回は、そのプログラムに新しく次のような機能を追加します。

  • マウスで選択した範囲を中心に画像を拡大する
  • 拡大鏡を使って画像の一部を拡大する
  • 別フォームを使ってエンボスやポスタライズという画像処理を施す

対象読者

 VB 6.0を使ってプログラムを作ったことのある人が対象です。

必要な環境

プログラム実行時の注意事項

 本稿のバイナリファイルを実行する場合は、必ずセットアッププログラムを実行してください。

GUIの作成

 LEADTOOLS 14.0J Raster Imaging Proのコンポーネントに含まれる、LeadMainコントロールをツールボックスに組み込んでおいてください。

 後は、画面にあるVisual Basicの各コントロール(今回は標準コントロール以外のコントロールも使用しています)をツールボックスに配置しておきます。

 後は、次の画面にあるVisual Basicの各コントロールをツールボックスに配置しておきます(今回は標準コントロール以外のコントロールも使用しています)。

 

実装する機能

 今回実装する機能は次のとおりです。

  1. 画像のズーム(拡大)を、マウスで選択した領域を中心に行う
  2. 拡大鏡
  3. エンボス
  4. ポスタライズ

 これらは、いずれもLeadMainコントロールのメソッドで行うことができます。

マウスで選択した範囲を中心に拡大する
マウスで選択した範囲を中心に拡大する
拡大鏡機能(3つの倍率をメニューで選べる)
拡大鏡機能(3つの倍率をメニューで選べる)
エンボス
エンボス
ポスタライズ
ポスタライズ

フォーム変更とメニューの追加

 フォームの[ズーム]パネルに、チェックボックスを1つ配置します。

 また、次のメニューを追加しておきます。

追加するメニュー
メニュー名 オブジェクト名
拡大鏡(&M) IDMMag
    200% IDM200
    300% IDM300
    400% IDM400
    - sepa
    キャンセル DMCX
特殊効果(&S) DMEffect
    エンボス DMEmboss
    ポスタライズ IDMPoster

 そして、[拡大鏡(&M)]と[特殊効果(&S)]の2つだけ、[有効]のチェックを外しておきます。

変更したフォームのデザイン
変更したフォームのデザイン

変数の修正と追加

 このプログラムでは、エンボスとポスタライズを別のフォームForm2で画像に施すようにします。そのため、読み込んだ画像のファイル名を格納する変数fnameを、Form2からも使えるようにDimからPublicに変更します。

 また、Form2はエンボスとポスタライズの2つの特殊効果で共有して使用するため、どちらのメニューが選ばれたのかを判別するString型変数flagを、同じくPublicで宣言します。

'Dimから Publicに変更
Public fname As String

'変数を追加
Public flag As String

選択した範囲を中心に拡大する機能

 前回組み込んだズーム機能は、画像全体を拡大・縮小しました。今度は、マウスで選択した部分を中心に画像を拡大する機能を組み込んでみます。

 この機能は、LeadMainコントロールの「ラバーバンド」という機能と、ZoomToRectメソッドを使用します。

 ラバーバンド(RubberBand)というのは、画像の上でマウスをドラッグした範囲を矩形で表示する機能です。LeadMainコントロールは、このラバーバンドを自動で作成する機能を持っており、選択範囲の座標位置を自動的に取得することができます。

 それでは、ラバーバンドで選択された部分を中心に拡大するようにします。

 まず、LeadMainコントロールのMouseDownイベントプロシージャを作成します。そして、その中でAutoRubberBandプロパティをTrueにします。これで、画像の中でラバーバンドを使うことができるようになります。

Private Sub LEAD1_MouseDown(Button As Integer, Shift As Integer, _
    x As Single, y As Single)
    With LEAD1
        .AutoRubberBand = True
        .MousePointer = 2
    End With
End Sub

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

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

    8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

バックナンバー

連載:ComponentZine(LEADTOOLS)
All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5