SHOEISHA iD

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

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

ComponentZine(LEADTOOLS)

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

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

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

拡大機能の実装

 次に、ラバーバンドで選択された範囲を取得し、ここを中心に画像を拡大する処理を作成します。この操作は、LeadMainコントロールのMouseUpイベントプロシージャで行います。

Private Sub LEAD1_MouseUp(Button As Integer, Shift As Integer, _
    x As Single, y As Single)

 まず、チェックボックスにチェックが入っている場合のみ、この処理を行うようにします。

If Check1.Value = 1 Then
    LEAD1.MousePointer = 0

 そして、ラバーバンドで選択された範囲を、「RubberBand」で始まるプロパティから取得します。LeftとTopはラバーバンドの矩形の左上の座標、WidthとHeightは矩形の幅と高さです。

zoomleft = LEAD1.RubberBandLeft
zoomtop = LEAD1.RubberBandTop
zoomwidth = LEAD1.RubberBandWidth
zoomheight = LEAD1.RubberBandHeight

 ただし、ラバーバンドが適切に作られていない場合は拡大の処理ができないため、これを把握しておく必要があります。そして、正しくラバーバンドが作成されていることを確認した上で、ZoomToRectメソッドを実行します。

If zoomleft <> 0 And zoomtop <> 0 And zoomwidth <> 0 And zoomheight <> 0 Then
    LEAD1.ZoomToRect zoomleft, zoomtop, zoomwidth, zoomheight
    LEAD1.ForceRepaint
End If
ラバーバンドのサイズによって拡大率が変わる(パターン1)
ラバーバンドのサイズによって拡大率が変わる(パターン1)
 
 
ラバーバンドのサイズによって拡大率が変わる(パターン2)
ラバーバンドのサイズによって拡大率が変わる(パターン2)
 
 

拡大鏡機能の実装

 拡大鏡は、画像の上を虫眼鏡アイコンで拡大して見てまわる機能です。LeadMainコントロールのStartMagGlassメソッドで簡単に実現できます。拡大の倍率を引数に指定できるので、メニューを使って「2倍」「3倍」「4倍」の3つの拡大鏡を選択できるようにします。

 まず、200倍の拡大鏡を作りましょう。この処理は、メニュー[200%]のClickイベントプロシージャに作成します。

拡大鏡用のメニュー
拡大鏡用のメニュー

 プロシージャの先頭で、選択したメニューにチェックマークをつけるようにします。これは、[300%][400%]も同じです。

Private Sub IDM200_Click()
    IDM200.Checked = True
    IDM300.Checked = False
    IDM400.Checked = False

 そして、拡大鏡の設定を行います。最初に、前に選んだ拡大率が残っている場合もあるので、一度拡大鏡をStopMagGlassメソッドでリセットします。

With LEAD1
    .StopMagGlass

 また、LeadMainコントロールのスケールモードを「ピクセル」に設定し、StartMagGlassメソッドを実行します。

.ScaleMode = 3
.StartMagGlass 50, 50, 200, RGB(255, 0, 0), RGB(128, 128, 128), _
    True, 1, False, CROSSHAIR_FINE, True, True

 StartMagGlassメソッドは、多くの引数を持ちますが、引数を詳しく説明するよりも、実際に引数の値を変えてメソッドを実行した方が、どの引数がどのような役割を果たしているのかがすぐに分かります。

 ここでは、拡大鏡を赤色の線で描き、拡大率を200%にしています。

EmbossStartMagGlassの書式
LEAD.StartMagGlass( fWidth!, fHeight!, nZoom%, clrPen&, clrBack&,
 bEllipse, fBorderSize!, b3D, nCrosshair%, bIgnoreRgn, bCenter )
EmbossStartMagGlassの引数
引数 説明
fWidth! 拡大鏡の幅(最小値は10ピクセル)
fHeight! 拡大鏡の高さ(最小値は10ピクセル)
nZoom% 拡大率(100以上 : 単位はパーセント)
clrPen& 拡大鏡の境界色
clrBack& 範囲外の領域の表示色
bEllipse 拡大鏡のカーソルの形
fBorderSize! 拡大鏡の境界の幅(ピクセル)
b3D 長方形の拡大鏡の表現
nCrosshair% クロスラインの表示
bIgnoreRgn リージョンの拡大
bCenter 拡大されたピクセルのセンタリング
200%の拡大鏡
200%の拡大鏡

 次は、300%の拡大鏡を作成します。最初に、メニューのチェックをつける処理を行い、StopMagGlassメソッドで倍率をリセットして、StartMagGlassメソッドの引数で拡大鏡を緑の線で描画し、300%の拡大率で実行します。

Private Sub IDM300_Click()
    IDM200.Checked = False
    IDM300.Checked = True
    IDM400.Checked = False

    With LEAD1
        .StopMagGlass
        .ScaleMode = 3
        .StartMagGlass 100, 100, 300, RGB(255, 0, 0), RGB(128, 128, 128), _
            True, 1, False, CROSSHAIR_FINE, True, True
    End With
End Sub
300%の拡大鏡
300%の拡大鏡

 400%の拡大鏡も同様に作成します。StartMagGlassメソッドの引数は、拡大鏡を青色の線で描画し、400%の拡大率にセットします。

Private Sub IDM400_Click()
    IDM200.Checked = False
    IDM300.Checked = False
    IDM400.Checked = True

    With LEAD1
        .StopMagGlass
        .ScaleMode = 3
        .StartMagGlass 150, 150, 400, RGB(255, 0, 0), RGB(128, 128, 128), _
            True, 1, False, CROSSHAIR_FINE, True, True
    End With
End Sub
400%の拡大鏡
400%の拡大鏡

 最後に、拡大鏡機能を停止させる処理を[キャンセル]メニューに作成します。これは、メニューのチェックを3つとも外し、StopMagGlassメソッドを実行するだけです。

Private Sub IDMCX_Click()
    IDM200.Checked = False
    IDM300.Checked = False
    IDM400.Checked = False

    LEAD1.StopMagGlass
End Sub

次のページ
Form2のデザインと初期化処理

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

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング