如何:创建缩放效果
更新:2007 年 11 月
下面的示例程序使用两个相同大小的位图模拟缩放效果,其中第二个位图包含第一个位图的缩放中心部分。
示例
' 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);
}
编译代码
此示例需要引用下面的命名空间: