4

要放大和缩小图像,有一种方法可以调整图片框的大小并以拉伸模式显示图像。虽然我不能有效地使用它,因为通常超过 8 倍它会产生存储错误 [认为 pictureBox 的 Size(32k, 32k) 它需要超过 1GB 的内存!

是否有特殊方法,或者我应该使用 ImageClone 仅缩放图像的可见部分?

更新:

这是项目首先尝试放大项目 [不可能,存储错误],而不是删除 form.cs 中的 41. 行:

pictureBox1.Image = youPicture;

删除此行后,程序将运行,请移动放大的图像。

这是链接: http ://rapidshare.com/files/265835370/zoomMatrix.rar.html

4

3 回答 3

3

通过使用图形对象的矩阵对象和变换属性:

using(Graphics g = this.CreateGraphics())
{
    using(Bitmap youPicture = new Bitmap(yourPictureFile))
    {
        g.DrawImage(youPicture, 0, 0, 300, 100); //set the desired size

        //Now you need to create a matrix object to apply transformation on your graphic
        Matrix mat = new Matrix();
        mat.Scale(1.5f, 1.5f, MatrixOrder.Append); //zoom to 150%
        g.Transform = mat;

        g.DrawImage(youPicture, new Rectangle(...), 0, 0, youPicture.Width,
            youPicture.Height, GraphicsUnit.Pixel) ;
    }
}
于 2009-08-07T12:48:39.947 回答
1

我个人只会缩放可见部分,因为其余部分无论如何都被隐藏了(因此没有用)

于 2009-08-07T12:38:48.993 回答
1

请参阅对先前问题的回答。您绝对不想通过放大图像并仅显示其中的一部分来进行缩放——您将遇到您已经遇到的内存问题。另外,图片框的拉伸模式没有使用高质量的插值,所以结果看起来很糟糕。

在我在这里链接的答案中,我包含了一个 C# 项目的链接,该项目向您展示了如何进行这种缩放。

更新:这里是可下载项目的直接链接。

于 2009-08-07T12:50:03.520 回答