我正在使用C#创建一个图像查看器,并且在缩放(缩放)PictureBox
方面存在一个小问题。
我在PictureBox
内有Panel
,我可以使用左上方的控件缩放(缩放)图像,并使用鼠标滚轮就可以了。但是,在某些特定的缩放比例下,图像并不覆盖整个PictureBox
。
例如,SO徽标(100x116像素),100%和200%:
右边的图像是199x131像素,而PictureBox
是200x132。
我已将BackColor
的{{1}}设置为PictureBox
,以使问题显而易见。
这并不总是会发生,只是在特定的缩放级别。这是为什么?我做错了吗?
我可以将Red
的{{1}}设置为BackColor
的{{1}},以给出图像覆盖整个PictureBox
的幻觉,但我而是解决问题。如果我不能,我将应用棘手的解决方案。
相关代码:
BackColor
我还创建了一个repository,以防有人想要现场检查应用。
答案 0 :(得分:1)
您需要在ImageBox_Paint
中调整矩形。试试这个:
private void ImageBox_Paint(object sender, PaintEventArgs e)
{
int add = ImageBox.Width / 200;
// disable interpolation (sharper pixels)
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
// https://msdn.microsoft.com/en-us/library/ms142046(v=vs.110).aspx
e.Graphics.DrawImage(image,
new Rectangle(0, 0, ImageBox.Width + add, ImageBox.Height + add),
0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
}
答案 1 :(得分:0)
只需将PictureBox的SizeMode
属性设置为Zoom
即可。然后调整图片框的大小将自动使图像拉伸到其完整大小。
你甚至不需要那个Paint事件监听器;它是内置功能。只需将PictureBox的尺寸更改为图像的计算缩放尺寸即可。