SHOEISHA iD

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

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

ComponentZine(LEADTOOLS)

自作プログラムにPhotoshopのような画像処理機能を組み込む

LEADTOOLS 14.0J Raster Imaging Proによる画像処理プログラムの作成 第1回

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

フォームの初期化と画像の読み込み

 まずは、フォームにLEAD Mainコントロールを配置し、画像の読み込み処理を作成しましょう。

 フォームのGUIは、左端に操作パネルを作成し、右側にLEAD Mainコントロールを配置します。操作パネルには、とりあえずコマンドボタンを2つ配置し、CommonDialogコントロールを1つ配置します。

 そして、LEAD Mainコントロールをやや大きめに作成します。読み込んだ画像は、このLEAD Mainコントロールに表示され、LEAD Mainコントロール内で画像処理が行われます。

フォームのデザイン
フォームのデザイン

フォームのLoadイベント処理

 フォームのLoadイベントプロシージャでは、LEAD Mainコントロールの各設定を行います。

Private Sub Form_Load()
    With LEAD1
        .Appearance = APPEARANCE_FLAT
        .BorderStyle = 1
        .BackColor = RGB(255, 255, 125)
        .PaintDither = PAINTDITHER_DIFFUSION
        .PaintPalette = PAINTPALETTE_AUTO
        .AutoRepaint = True
        .AutoSize = True
        .AutoSetRects = True
        .PaintSizeMode = PAINTSIZEMODE_FIT
    End With
End Sub

画像の読み込み

 画像を読み込む[画像ロード]ボタンのClickイベントプロシージャでは、コモンダイアログコントロールを使って画像ファイルを選択し、このファイル名をLEAD MainコントロールのLoadメソッドに渡します。これで、LEAD Mainコントロールには、選んだ画像が表示されます。

Private Sub Command1_Click()
    CommonDialog1.ShowOpen
    fname = CommonDialog1.FileName
    On Error GoTo FAIL
    LEAD1.Load fname, 0, 0, 1

FAIL:
End Sub

ズーム機能の実装

 次に、ズーム機能を組み込みます。これは、フレームに2つのボタンを配置し、このボタンで拡大・縮小を行います。

 画像の拡大・縮小は、PaintZoomFactorプロパティに、ズーム値(%)を設定して行います。デフォルトは100%です。現在のズーム値を取得し、これに10%の割合で増減値を設定します。

 なお、このフレームを含め、この先使用するフレームはすべてフォームデザイン時にEnabledプロパティをFalseにしておきます。これは、画像が表示されていないのに各Effectが実行されるのを防ぐためです。

Private Sub Command2_Click()
    With LEAD1
        .AutoSetRects = True
        .PaintSizeMode = PAINTSIZEMODE_ZOOM
        .BackErase = False
        .PaintZoomFactor = .PaintZoomFactor + 10
    End With
End Sub

Private Sub Command3_Click()
    With LEAD1
        .AutoSetRects = True
        .BackErase = False
        .PaintSizeMode = PAINTSIZEMODE_ZOOM
        If .PaintZoomFactor > 10 Then
            .PaintZoomFactor = .PaintZoomFactor - 10
        End If
    End With
End Sub

モザイク機能の実装

 モザイク機能の実装はとても簡単です。LEAD MainコントロールのMozaicメソッドを実行するだけです。引数に、モザイクのサイズをピクセル単位で指定します。

 ここでは、アップダウンコントロールを使ってモザイクのサイズを入力し、Mozaicメソッドの引数に指定しています。

Private Sub UpDown1_Change()
    Me.Label1.Caption = Me.UpDown1.Value
End Sub

Private Sub Command5_Click()
    Me.LEAD1.Mosaic (Me.UpDown1.Value)
End Sub

コントラスト変更機能の実装

 コントラストの変更も簡単です。LEAD MainコントロールのContrastメソッドに、コントラストの値を-1,000から +1,000までの範囲で指定します。

 ここでは、テキストボックスとスクロールバーを使ってコントラストの入力値を設定しています。

 当然、スクロールバーでは動作範囲を-1,000から +1,000までに設定し、テキストボックスもその範囲以外の入力があった場合は受け付けないようにします。

Private Sub HScroll1_Change()
    Text1.Text = HScroll1.Value
End Sub

Private Sub Text1_Change()
    If CInt(Text1.Text) <= 1000 Or CInt(Text1.Text) >= -1000 Then
        HScroll1.Value = Text1.Text
    Else
        MsgBox "1000から-1000までの値を入力してください"
    End If
End Sub

Private Sub Command4_Click()
    LEAD1.Contrast (Me.HScroll1.Value)
End Sub

ブレ機能の実装

 ブレの設定は、スライダーコントロールで行います。

 ブレの設定もMotionBlurメソッドを実行するだけですが、ブレの方向をメソッドの引数で細かく指定できます。

MotionBlurメソッド
LEAD.MotionBlur( iDim, lAngle, bUnidirectional )
引数 説明
iDim ぼかすサイズをピクセル単位で指定します。
lAngle ブレの移動方向を指定します。これは、1/100度単位の角度で1~36000の値を指定できます。値が正で時計回り、負で反時計回りになります。0で水平方向、9000(90度)で垂直方向のブレになります。後は、指定した角度の方向にブレていきます。
bUnidirectional 移動を一方向のみに適用するかどうかを示すフラグを、True・Falseで指定します。

 ここでは、縦ブレ・横ブレをオプションボタンで選んでもらい、スライダーの値でブレのピクセルを設定しています。

Private Sub Slider1_Click()
    Dim ret As Integer

    If Me.Option1.Value = True Then
        ret = Me.LEAD1.MotionBlur(Me.Slider1.Value, 0, False)
    Else
        ret = Me.LEAD1.MotionBlur(Me.Slider1.Value, 9000, False)
    End If
End Sub

リセット機能とフレームの有効化処理

 最後に、加工した画像をリセットする機能を組み込みます。

 これは、LEAD Mainコントロールに表示している画像を再度読み込み、各コントロールに設定した値を元に戻します。

Private Sub Command6_Click()
    If fname <> "" Then
        LEAD1.Load fname, 0, 0, 1
        LEAD1.PaintSizeMode = PAINTSIZEMODE_NORMAL
        Me.UpDown1.Value = 1
        Text1.Text = 0
        Me.Slider1.Value = 0
    End If
End Sub

 また、フォームデザイン時に無効にしていたフレームを有効にする処理を、[画像ロード]ボタンのClickイベントプロシージャに作成します。

Private Sub Command1_Click()
    CommonDialog1.ShowOpen
    fname = CommonDialog1.FileName
    On Error GoTo FAIL
    LEAD1.Load fname, 0, 0, 1
    
    '画像を読み込んでから各操作パネルを有効にする処理を追加
    Frame1.Enabled = True
    Frame2.Enabled = True
    Frame3.Enabled = True
    Frame4.Enabled = True
    
    IDMSave.Enabled = True
FAIL:
End Sub

次のページ
ファイルへの保存処理

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

  • このエントリーをはてなブックマークに追加
ComponentZine(LEADTOOLS)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング