GDI + DrawImage函数

时间:2010-04-16 22:46:23

标签: gdi+ zoom

我缺少一些东西。说我有以下代码:

private Bitmap source = new Bitmap (some_stream);
Bitmap bmp = new Bitmap(100,100);
Rectangle newRect = new Rectangle(0, 0, bmp.Width, bmp.Height);
Rectangle toZoom= new Rectangle(0, 0, 10, 10);

Graphics g = Graphics.FromImage(bmp);
g.DrawImage(source, newRect, toZoom, GraphicsUnit.Pixel);

我的目标是放大源图片左上角的1​​0x10像素。创建图形对象g并调用DrawImage后:请求的矩形(toZoom)将被复制到bmp,还是会显示在屏幕上?我有点困惑,有人可以澄清一下吗?

2 个答案:

答案 0 :(得分:1)

您的代码只会为您提供内存中的位图(不会自动显示在屏幕上)。一种显示方法的简单方法是在表单上放置一个100 x 100 PictureBox,然后像这样设置Image属性(使用上面代码中的Bitmap):

pictureBox1.Image = bmp;

此外,您还需要代码中的一些using块:

using (private Bitmap source = new Bitmap (some_stream))
{
    Bitmap bmp = new Bitmap(100,100);
    Rectangle newRect = new Rectangle(0, 0, bmp.Width, bmp.Height);
    Rectangle toZoom= new Rectangle(0, 0, 10, 10);
    using (Graphics g = Graphics.FromImage(bmp))
    {
        g.DrawImage(source, newRect, toZoom, GraphicsUnit.Pixel);
    }
    pictureBox1.Image = bmp;
}

请注意,using没有bmp块 - 这是因为您将其设置为PictureBox的Image属性。 using块在块的作用域末尾自动调用对象的Dispose方法,由于它仍在使用中,因此您不想这样做。

答案 1 :(得分:0)

它将被复制而不显示。