方法 : 拡大縮小効果を作成する

更新 : 2007 年 11 月

次のプログラム例では、同じ大きさの 2 つのビットマップに対するズーム効果をシミュレートしています。第 2 のビットマップには、第 1 のビットマップの拡大された中心部が含まれています。

使用例

' Define bmp and bmpZoom as
' global Bitmap variables for your form.

' Call CreateBitmap and then DefineZoom
' from your form's consructor.

Sub CreateBitmap()
    bmp = New Bitmap(75, 75)
    Dim g As Graphics = Graphics.FromImage(bmp)

    Dim BlueBrush As New SolidBrush(Color.Blue)
    Dim RedBrush As New SolidBrush(Color.Red)

    Dim OuterRect As New Rectangle(0, 0, 200, 200)
    g.FillRectangle(BlueBrush, OuterRect)

    Dim InnerRect As New Rectangle(25, 25, 25, 25)
    g.FillRectangle(RedBrush, InnerRect)

    g.Dispose()
End Sub

Sub ZoomImage()
    bmpZoom = New Bitmap(bmp.Width, bmp.Height)
    Dim g As Graphics = Graphics.FromImage(bmpZoom)

    Dim srcRect As New Rectangle(CInt(bmp.Width / 4), CInt(bmp.Height / 4), _
        CInt(bmp.Width / 2), CInt(bmp.Height / 2))
    Dim dstRect As New Rectangle(0, 0, bmpZoom.Width, bmpZoom.Height)
    g.DrawImage(bmp, dstRect, srcRect, GraphicsUnit.Pixel)
End Sub

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    e.Graphics.DrawImage(bmp, 0, 0)
    e.Graphics.DrawImage(bmpZoom, 125, 0)

    bmp.Dispose()
    bmpZoom.Dispose()
    MyBase.OnPaint(e)
End Sub
// Define bmp and bmpZoom as
// global Bitmap variables for your form.

// Call CreateBitmap and then DefineZoom
// from your form's consructor.
void CreateBitmap()
{
    bmp = new Bitmap(75, 75);
    Graphics g = Graphics.FromImage(bmp);
    SolidBrush BlueBrush = new SolidBrush(Color.Blue);
    SolidBrush RedBrush = new SolidBrush(Color.Red);
    Rectangle OuterRect = new Rectangle(0, 0, 200, 200);
    g.FillRectangle(BlueBrush, OuterRect);
    Rectangle InnerRect = new Rectangle(25, 25, 25, 25);
    g.FillRectangle(RedBrush, InnerRect);
    g.Dispose();
}

   private void ZoomImage()
    {
        bmpZoom = new Bitmap(bmp.Width, bmp.Height);
        Graphics g = Graphics.FromImage(bmpZoom);
        int new4W = bmp.Width / 4;
        int new4H = bmp.Height / 4;
        int new2W = bmp.Width / 2;
        int new2H = bmp.Height / 2;
        Rectangle srcRect = new Rectangle(new4W, new4H, new2W, new2H);
        Rectangle dstRect = new Rectangle(0, 0, bmpZoom.Width, bmpZoom.Height);
        g.DrawImage(bmp, dstRect, srcRect, GraphicsUnit.Pixel);
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        e.Graphics.DrawImage(bmp, 0, 0);
        e.Graphics.DrawImage(bmpZoom, 125, 0);
        base.OnPaint(e);
    }

コードのコンパイル方法

この例では、次の名前空間への参照が必要です。

参照

概念

.NET Compact Framework に関する「方法」トピック

その他の技術情報

.NET Compact Framework でのグラフィックスと描画