如何根据图片框的大小生成图片

时间:2013-03-13 17:06:36

标签: c#

我根据图片框的大小生成图片,并将图片设置为图片框,其尺寸模式正常,但是完整图片没有显示,图片的区域很少被切断。我希望以这样的方式生成图片,因为当我将图片设置在图片框上时,应该显示完整的图像。这是我生成图片的代码

    new Bitmap _lastSnapshot = new Bitmap(261, 204);
    this.DrawToBitmap((Bitmap)_lastSnapshot, new Rectangle(Point.Empty, ((Bitmap)_lastSnapshot).Size));

261,204是图片框的大小,图片大小模式正常。我在生成后将lastSnapshot分配到图片框但是没有显示完整的图片。

我根据图片框大小调整了图像大小。它运作良好,但图像看起来变得模糊或不清楚。我必须设置图片框大小模式拉伸,以填充图像到图片框。

这是我根据图片框大小调整图片大小的例程。

public static Image ResizeImage(Image image, Size size, 
    bool preserveAspectRatio = true)
{
    int newWidth;
    int newHeight;
    if (preserveAspectRatio)
    {
        int originalWidth = image.Width;
        int originalHeight = image.Height;
        float percentWidth = (float)size.Width / (float)originalWidth;
        float percentHeight = (float)size.Height / (float)originalHeight;
        float percent = percentHeight < percentWidth ? percentHeight : percentWidth;
        newWidth = (int)(originalWidth * percent);
        newHeight = (int)(originalHeight * percent);
    }
    else
    {
        newWidth = size.Width;
        newHeight = size.Height;
    }
    Image newImage = new Bitmap(newWidth, newHeight);
    using (Graphics graphicsHandle = Graphics.FromImage(newImage))
    {
        graphicsHandle.InterpolationMode = InterpolationMode.HighQualityBicubic;
        graphicsHandle.DrawImage(image, 0, 0, newWidth, newHeight);
    }
    return newImage;
}

调用例行程序

ResizeImage(value,pictureBox1.Size,true);

任何人都可以给出一些建议来生成和调整图片大小以适应具有良好水晶般清晰图像的图片框。感谢

1 个答案:

答案 0 :(得分:0)

如果您想根据图片框大小预览图片框中的图片,那么: 将PictureBox属性SizeMode更改为Zoom。

pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;