拡大機能の実装
次に、ラバーバンドで選択された範囲を取得し、ここを中心に画像を拡大する処理を作成します。この操作は、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
拡大鏡機能の実装
拡大鏡は、画像の上を虫眼鏡アイコンで拡大して見てまわる機能です。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%にしています。
LEAD.StartMagGlass( fWidth!, fHeight!, nZoom%, clrPen&, clrBack&, bEllipse, fBorderSize!, b3D, nCrosshair%, bIgnoreRgn, bCenter )
引数 | 説明 |
fWidth! |
拡大鏡の幅(最小値は10ピクセル) |
fHeight! |
拡大鏡の高さ(最小値は10ピクセル) |
nZoom% |
拡大率(100以上 : 単位はパーセント) |
clrPen& |
拡大鏡の境界色 |
clrBack& |
範囲外の領域の表示色 |
bEllipse |
拡大鏡のカーソルの形 |
fBorderSize! |
拡大鏡の境界の幅(ピクセル) |
b3D |
長方形の拡大鏡の表現 |
nCrosshair% |
クロスラインの表示 |
bIgnoreRgn |
リージョンの拡大 |
bCenter |
拡大されたピクセルのセンタリング |
次は、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
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
最後に、拡大鏡機能を停止させる処理を[キャンセル]メニューに作成します。これは、メニューのチェックを3つとも外し、StopMagGlass
メソッドを実行するだけです。
Private Sub IDMCX_Click() IDM200.Checked = False IDM300.Checked = False IDM400.Checked = False LEAD1.StopMagGlass End Sub