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
に代入した文字列で判別します。
フォームForm2
のLoad
イベントプロシージャでは、この変数の値を基に、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つの引数に設定します。
LEAD.Emboss( iDirection%, iDepth% )
iDirection%
……エッジの方向を次の定数で指定するiDepth%
……エッジの高さ(0~1000、普通の高さは500)
定数 | 説明 |
EMBOSS_N |
上 |
EMBOSS_NE |
右上 |
EMBOSS_E |
右 |
EMBOSS_SE |
右下 |
EMBOSS_S |
下 |
EMBOSS_SW |
左下 |
EMBOSS_W |
左 |
EMBOSS_NW |
左上 |
ポスタライズは、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
まとめ
LeadMainコントロールの多彩な機能の中から、いくつかの画像処理機能を実装したプログラムを作成してみました。
LeadMainコントロールには、まだまだ伝えきれないたくさんの機能が組み込まれていますので、アイデア次第で、もっといろいろなことが実現できるでしょう。