C# 调整中心绘制图像的大小

C# 调整中心绘制图像的大小,c#,image,bitmap,resize,picturebox,C#,Image,Bitmap,Resize,Picturebox,我想使用轨迹栏重新调整在事件中绘制的图像的大小 到目前为止,我已将文件中的图像加载到名为original的位图中。现在我有了另一个名为“裁剪”的位图,它存储了原始图像的一部分 Bitmap original = new Bitmap(spriteSheet); RectangleF srcRect = new RectangleF(ip.x, ip.y, ip.width, ip.height); Bitmap cropped = original.Clone(srcRect, original

我想使用轨迹栏重新调整在
事件中绘制的图像的大小

到目前为止,我已将文件中的图像加载到名为
original
的位图中。现在我有了另一个名为“裁剪”的位图,它存储了原始图像的一部分

Bitmap original = new Bitmap(spriteSheet);
RectangleF srcRect = new RectangleF(ip.x, ip.y, ip.width, ip.height);
Bitmap cropped = original.Clone(srcRect, original.PixelFormat);
我有一个名为
pb_preview
的图片盒,它可以像这样绘制裁剪后的图像:

e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
RectangleF rc = new RectangleF(pb_preview.Height / 2, pb_preview.Width / 2, zoomSlider.Value * cropped.Width, zoomSlider.Value * cropped.Height);
e.Graphics.DrawImage(cropped, rc);
在我的轨迹栏更改值事件中,我使
pb_预览
无效,因此每次我更改值时,
pb_预览
将以更大的值绘制图像


问题是,每次我更改轨迹栏的值时,图像不会在中心调整大小,而是会调整大小,但每次调整大小时,图像都会向左移动一点,直到最大大小的图像超出帧

我设法找到了另一个关于调整大小的问题,并遇到了这个函数:

private Bitmap ResizeBitmap(Bitmap b, int nWidth, int nHeight)
{
    Bitmap result = new Bitmap(nWidth, nHeight);
    using (Graphics g = Graphics.FromImage(result))
    {
        g.InterpolationMode = InterpolationMode.NearestNeighbor;
        g.DrawImage(b, 0, 0, nWidth, nHeight);
    }
    return result;
}
在轨迹栏的值更改事件中,我执行以下操作:

pb_preview.Image = ResizeBitmap(cropped, zoomSlider.Value * cropped.Width, zoomSlider.Value * cropped.Height);

你能把代码贴在使
PictureBox无效的地方吗?@VishnuPrasad我在Trackbar滚动事件中无效,就在我创建裁剪的位图之后,在下面。你每次都在创建裁剪的位图吗?如果是,则
ip
对象成员值在该时间内是否发生变化。您裁剪的图像大小似乎与
pb\u预览
picturebox大小不成比例。@VishnuPrasad我设法解决了它,将发布解决方案soon@VishnuPrasad谢谢你的努力:D