フォームの初期化と画像の読み込み
まずは、フォームに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
メソッドを実行するだけですが、ブレの方向をメソッドの引数で細かく指定できます。
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