如何调整图像大小以适合图片框?

时间:2020-07-29 15:52:26

标签: c# winforms

我正在尝试调整图像大小以适合PictureBox的大小,但无法正常工作。 我添加了一种方法resizeImage,但是无论我给出的大小如何,结果都是相同的。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
        Bitmap myBitmap = CreateNonIndexedImage(new Bitmap(@"d:\drawplane1.jpg"));
        resizeImage(myBitmap, new Size(1, 1));

        // Draw myBitmap to the screen.
        e.Graphics.DrawImage(myBitmap, 0, 0, myBitmap.Width,
            myBitmap.Height);

        // Set each pixel in myBitmap to black.
        for (int Xcount = 0; Xcount < myBitmap.Width; Xcount++)
        {
            for (int Ycount = 0; Ycount < myBitmap.Height; Ycount++)
            {
                myBitmap.SetPixel(Xcount, Ycount, Color.Black);
            }
        }

        // Draw myBitmap to the screen again.
        e.Graphics.DrawImage(myBitmap, myBitmap.Width, 0,
            myBitmap.Width, myBitmap.Height);
    }

    public Bitmap CreateNonIndexedImage(Image src)
    {
        Bitmap newBmp = new Bitmap(src.Width, src.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

        using (Graphics gfx = Graphics.FromImage(newBmp))
        {
            gfx.DrawImage(src, 0, 0);
        }

        return newBmp;
    }

    public static Image resizeImage(Image imgToResize, Size size)
    {
        return (Image)(new Bitmap(imgToResize, size));
    }
}

我没有在行中放入多少大小

resizeImage(myBitmap, new Size(1, 1));

.. pictureBox中的图像太大: 我尝试10,10,然后尝试1,1进行测试,但它没有改变图像大小。

Image in picturebox

这是原始图片:

Original

原始图像文件:https://imgur.com/a/umegyk1

3 个答案:

答案 0 :(得分:2)

尝试将SizeMode中的PictureBox设置为PictureSizeMode.ZoomPictureSizeMode.StretchImage,看看是否有帮助。通过属性编辑器或代码。

 pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

答案 1 :(得分:2)

您可以在“属性”窗口中使用PictureBox的SizeMode属性,并将其值设置为StrechImage

enter image description here

答案 2 :(得分:1)

您的代码有两个问题:

  • 您不使用SizeMode属性
  • 您在Paint事件中绘制图像,而不仅仅是设置Image属性

如果您想在Paint中绘制图像(例如,因为它是动画,其帧快速生成),则不需要PictureBox,简单的{{1 }}也会这样做。

但是,如果仅生成一次图像,则只需将其分配给Panel属性,设置Image进行缩放,SizeMode会关注其余部分