【发布时间】:2016-05-06 14:18:42
【问题描述】:
我想使用轨迹栏来调整.._Paint 事件中正在绘制的图像的大小。
到目前为止,我已将文件中的图像加载到名为original 的位图中。现在我有另一个名为“cropped”的位图,它存储了原始图像的一部分。
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_preview 无效,因此每次更改值时,pb_preview 都会以更大的值绘制图像。
问题是每次我更改轨迹栏的值时,图像都不会在中心调整大小,而是会调整大小,但每次调整大小时它都会向左移动一点,直到最大调整大小的图像超出框架。
【问题讨论】:
-
你能把代码贴在你使
PictureBox无效的地方吗? -
-
你每次都创建裁剪位图吗?如果是这样,
ip对象成员的值在那段时间会发生变化吗? .您裁剪的图像大小似乎与pb_preview图片框大小不成比例。 -
@VishnuPrasad 我设法解决了,很快就会发布解决方案
-
@VishnuPrasad 感谢您的努力:D
标签: c# image bitmap resize picturebox