c#在big PictureBox上绘制一个小图像

时间:2018-04-16 15:49:27

标签: c# image picturebox

想象一下,您正在WinForms应用中的700x700 PictureBox上绘制一张10x10 .png图片。问题是在PictureBox上向上和向左移动0.5像素的图片。 您可以在这里观看测试图片: enter image description here 它是正方形,宽度为1px。

结果PictureBox看起来像: enter image description here 你可以看到,这个边界的宽度并不是相同的,并且向左和向上移动0.5 px(我在PictureBox上称为px和px等效,因为这个来自10x10图片的px就像是100x100真实像素)。

在代码中我使用InterpolationMode.NearestNeighbor来正确显示大画布上的小图片。但它并没有改变结果。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        testBmp = new Bitmap("some_path_here\\test.png");
        drawBitmapOnPictureBox(pictureBox1, testBmp);
    }

    private void drawBitmapOnPictureBox(PictureBox pictureBox, Bitmap bmp)
    {
        if (pictureBox.Size != bmp.Size)
        {
            float zoom = 60.0f;
            Bitmap zoomed = new Bitmap((int)(bmp.Width * zoom), (int)(bmp.Height * zoom));

            using (Graphics g = Graphics.FromImage(zoomed))
            {
                g.InterpolationMode = InterpolationMode.NearestNeighbor;
                g.DrawImage(bmp, new Rectangle(Point.Empty, zoomed.Size));
            }
            pictureBox.Image = zoomed;
        }
        else
            pictureBox.Image = bmp;
    }

    Bitmap testBmp;
}

0 个答案:

没有答案