ヘッダー

VB.NET2002対応 VB.NET2003対応 VB2005対応

 

Visual Basic 中学校 > VB.NET サンプル >

画像を拡大・縮小する

以下の関数Magnifyを使用すると、画像を拡大・縮小できる。使用例はすぐ下にある。

VB.NET2002対応 VB.NET2003対応 VB2005対応

'■Magnify
''' <summary>画像を拡大・縮小する。</summary>
''' <param name="Source">対象の画像</param>
''' <param name="Rate">拡大率。以下の値を指定した場合は縮小される。</param>
''' <param name="Quality">画質。省略時は最高画質。</param>
''' <returns>処理後の画像</returns>
Private Function Magnify(ByVal Source As Image, ByVal Rate As Double, Optional ByVal Quality As Drawing2D.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic) As Image

    '▼引数のチェック

    If IsNothing(Source) Then
       
Throw New NullReferenceException("Sourceに値が設定されていません。")
    End
If

    If CInt(Source.Size.Width * Rate) <= 0 OrElse CInt(Source.Size.Height * Rate) <= 0 Then
        Throw New ArgumentException("処理後の画像のサイズが0以下になります。Rateには十分大きな値を指定してください。")
    End
If

    '▼処理後の大きさの空の画像を作成

    Dim NewRect As Rectangle

    NewRect.Width = CInt(Source.Size.Width * Rate)
    NewRect.Height =
CInt(Source.Size.Height * Rate)

    Dim DestImage As New Bitmap(NewRect.Width, NewRect.Height)

    '▼拡大・縮小実行

    Dim g As Graphics = Graphics.FromImage(DestImage)

    g.InterpolationMode = Quality
    g.DrawImage(Source, NewRect)

    Return DestImage

End Function

メモ:拡大・縮小は基本的には不可逆変換です。2倍に拡大した画像を半分に縮小しても元の画像に戻る保障はありません。拡大・縮小を繰り返すことにより画質は劣化します。

 

使用例1:PictureBox1の画像を1.2倍に拡大する例

VB.NET2002対応 VB.NET2003対応 VB2005対応


PictureBox1.Image = Magnify(PictureBox1.Image, 1.2F)
 

メモ:PictureBox1にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。

 

使用例2:PictureBox1の画像を0.8倍に縮小する例

VB.NET2002対応 VB.NET2003対応 VB2005対応


PictureBox1.Image = Magnify(PictureBox1.Image, 0.8F)
 

メモ:PictureBox1にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。

 


VB6対応  VB6ではAPIやDirectX等を使用しますがかなり困難です。