画像の拡大と縮小

前回作成した簡易画像編集ソフトはファイルを開くことと保存することしかできず、肝心の編集機能がありませんでした。今回は画像の拡大と縮小をおこないます。

SizeChangeメソッドの作成

SizeChangeメソッドはサイズを変更するためのダイアログを表示し、実際にサイズの変更をおこないます。

実際に画像のサイズ変更をするメソッドは以下のとおりです。新しい幅と高さを指定してサイズを変更します。

SizeChangeFormクラスの作成

SizeChangeFormクラスはサイズ変更のためのフォームを管理するためのものです。縦横のピクセル数で指定することも、拡大縮小率で指定することもできます。また縦横の比率を変えずにサイズ変更をすることもできます。

コンストラクタのなかで、[OK]ボタンと[キャンセル]ボタンがおされるとDialogResult.OKとDialogResult.Cancelを返すようにしています。

また[ピクセルで指定][拡大率で指定]が選択されている場合、他方のコントロールは操作できないようにしています。

サイズ変更を設定するためのダイアログには現在の画像のサイズを表示させる必要があります。イベントハンドラSizeChangeForm_Loadは、大きさが変更される前の画像のサイズをダイアログに表示させます。

イベントハンドラCheckBox1_CheckedChangedは[縦横の比率をそろえる]のチェックボックスのチェック状態が変更されると呼び出されます。

[縦横の比率をそろえる]が選択されている場合は縦横の拡大縮小率を同じにし、それ以外のコントロールに入力されている値も適切な値に変更しています。

ピクセルで指定する場合、値が変更されると拡大縮小率も適切な値に変更する必要があります。逆の場合も同様です。以下のイベントハンドラはそのための処理をするためのものです。

PixelRadioButton_CheckedChangedイベントハンドラは、ラジオボタンの[ピクセルで指定]、[拡大縮小率で指定]の選択が変更されたときに呼び出されます。PixelRadioButton_CheckedChangedはNumericUpDownコントロールを有効、無効を切り替えるためのものです。

イベントハンドラButtonOK_Clickは[OK]がクリックされたときに設定された値を保存します。これによって編集中の画像に変更を反映させることができるようになります。