SHOEISHA iD

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

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

ComponentZine(LEADTOOLS)

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

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

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

Form2のデザインと初期化処理

 エンボスとポスタライズ機能を組み込みますが、これらの処理は別フォームで行うようにします。

 まず、今あるフォームの[特殊効果]-[エンボス]/[ポスタライズ]メニューのClickイベントプロシージャに、それぞれ次のコードを記述します。

Private Sub IDMEmboss_Click()
    flag = "エンボス"
    Form2.Caption = "エンボス"
    Form2.Show
End Sub

Private Sub IDMPoster_Click()
    flag = "ポスタライズ"
    Form2.Caption = "ポスタライズ"
    Form2.Show
End Sub

 そして、プロジェクトにフォームを追加し、LeadMainコントロールをここにも配置します。また、スクロールバーコントロールとボタンを3つ配置します。

 このフォームでは、エンボスとポスタライズの2つの効果を行うので、どちらの処理を実行するのかを変数flagに代入した文字列で判別します。

 フォームForm2Loadイベントプロシージャでは、この変数の値を基に、Select Caseステートメントを使って処理を分岐し、スクロールバーコントロールの動作範囲の設定とエフェクトの実施を行います。

 操作対象の画像ファイルは、フォームForm1のコードでPublic宣言した変数fnameから取得します。

Private Sub Form_Load()
    Dim ret As Integer
     LEAD1.Load Form1.fname, 0, 0, 1

    Select Case Form1.flag
        Case "エンボス"
            With HScroll1
                .Max = 1000
                .Min = 0
                .SmallChange = 10
                .LargeChange = 50
                .Value = 500
            End With
            ret = LEAD1.Emboss(EMBOSS_SW, HScroll1.Value)

        Case "ポスタライズ"
            With HScroll1
                .Max = 64
                .Min = 2
                .SmallChange = 1
                .LargeChange = 5
                .Value = 2
            End With
            ret = LEAD1.Posterize(HScroll1.Value)
    End Select
End Sub

エンボスとポスタライズ機能の実装

 エンボスとポスタライズの設定は、スクロールバーコントロールのChangeイベントプロシージャで行います。2つの特殊効果は、いずれもLeadMainコントロールのメソッドで行います。

Private Sub HScroll1_Change()
    Dim ret As Integer
    LEAD1.Load Form1.fname, 0, 0, 1

    Select Case Form1.flag
        Case "エンボス"
            ret = LEAD1.Emboss(EMBOSS_SW, HScroll1.Value)
        Case "ポスタライズ"
            ret = LEAD1.Posterize(HScroll1.Value)
    End Select
End Sub

 エンボスはEmbossメソッドを使い、引数に光源の方向を定数で指定して、浮き上がりの高さをもう1つの引数に設定します。

Embossメソッドの書式
LEAD.Emboss( iDirection%, iDepth% )
  • iDirection%……エッジの方向を次の定数で指定する
  • 定数 説明
    EMBOSS_N
    EMBOSS_NE 右上
    EMBOSS_E
    EMBOSS_SE 右下
    EMBOSS_S
    EMBOSS_SW 左下
    EMBOSS_W
    EMBOSS_NW 左上
  • iDepth%……エッジの高さ(0~1000、普通の高さは500)

 ポスタライズは、Posterizeメソッドを使用します。引数は1つで、色調を2~64の数値で指定します。いずれのメソッドも正常終了は0を、エラーは0以外の数値を返してきますので、戻り値を変数で受け取るようにします。

Form1への処理の転送

 Form2で特殊効果が決まったら、その値を使ってForm1のLeadMainコントロールの画像にも、同じ設定で特殊効果を実施します。

Private Sub Command2_Click()
    Dim ret As Integer
    Select Case Form1.flag
        Case "エンボス"
            ret = Form1.LEAD1.Emboss(EMBOSS_SW, HScroll1.Value)
        Case "ポスタライズ"
            ret = Form1.LEAD1.Posterize(HScroll1.Value)
    End Select
    Unload Me
End Sub
Form2での効果の設定を...
Form2での効果の設定を...
 
Form1に反映する
Form1に反映する

まとめ

 LeadMainコントロールの多彩な機能の中から、いくつかの画像処理機能を実装したプログラムを作成してみました。

 LeadMainコントロールには、まだまだ伝えきれないたくさんの機能が組み込まれていますので、アイデア次第で、もっといろいろなことが実現できるでしょう。

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

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

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング