如何拉伸位图以填充PictureBox

jac*_*nad 3 c# bitmap picturebox winforms

我需要拉伸各种大小的位图来填充PictureBox. PictureBoxSizeMode.StretchImage有点做我需要的但却无法想到使用这种方法正确地向图像添加文本或线条的方法.下图是一个5x5像素的位图,延伸到380x150 PictureBox.

使用pictureBox.SizeMode = PictureBoxSizeMode.StretchImage

pictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox.Image = bmp;
Run Code Online (Sandbox Code Playgroud)

我尝试用这种方式调整这个例子这个例子

using (var bmp2 = new Bitmap(pictureBox.Width, pictureBox.Height))
using (var g = Graphics.FromImage(bmp2))
{
    g.InterpolationMode = InterpolationMode.NearestNeighbor;
    g.DrawImage(bmp, new Rectangle(Point.Empty, bmp2.Size));
    pictureBox.Image = bmp2;
}
Run Code Online (Sandbox Code Playgroud)

但得到这个

使用g.DrawImage(bmp,new Rectangle(Point.Empty,bmp2.Size))

我错过了什么?

use*_*116 5

你似乎丢掉了bmp2你希望在你的图片框中看到的位图()!使用您发布的示例中using块,因为代码返回后代码不再需要该对象.在您的示例中,您需要使用Bitmap,因此变量上没有-block .Bitmapusingbmp2

以下应该有效:

using (bmp)
{
    var bmp2 = new Bitmap(pictureBox.Width, pictureBox.Height);
    using (var g = Graphics.FromImage(bmp2))
    {
        g.InterpolationMode = InterpolationMode.NearestNeighbor;
        g.DrawImage(bmp, new Rectangle(Point.Empty, bmp2.Size));
        pictureBox.Image = bmp2;
    }
}
Run Code Online (Sandbox Code Playgroud)