C#: 使用滚动条简单而实用的方式缩放PictureBox图像

14

有没有一种简单实用的方法可以在picturebox中包括滚动条缩放图片?

目前,我在面板中使用带自动滚动的picture box。为了进行缩放,我会放大picturebox并使用面板上的滚动条移动它。问题是,它的行为很奇怪。例如,如果你缩放太远,上部和左侧表单边框与图像之间的边距会越来越大。

这就是缩放方法。我从这里获取了它。

private void ZoomInOut(bool zoom)
    {
        //Zoom ratio by which the images will be zoomed by default
        int zoomRatio = 10;
        //Set the zoomed width and height
        int widthZoom = pictureBox_viewer.Width * zoomRatio / 100;
        int heightZoom = pictureBox_viewer.Height * zoomRatio / 100;
        //zoom = true --> zoom in
        //zoom = false --> zoom out
        if (!zoom)
        {
            widthZoom *= -1;
            heightZoom *= -1;
        }
        //Add the width and height to the picture box dimensions
        pictureBox_viewer.Width += widthZoom;
        pictureBox_viewer.Height += heightZoom;

    }

非常感谢任何帮助。

提前致谢。

马可

编辑: 一张未放大和一张放大了16倍的图像的两个截屏。 请注意图像上边框与表单上边框之间的空白边距。 未放大的图片 放大16倍的图片


简单回答:不!您目前使用的方式是最佳选择。我不太明白您在问题中描述的问题所在。我认为在这种情况下,截图会很有帮助。 - King King
除非有一些代码更改了您的PictureBox的“Top”和“Left”,否则这非常奇怪。您应该自己检查整个代码或在此处发布。 - King King
我已经在这个程序中发布了关于缩放的任何代码。 :( - Marco Frost
不,我的意思是应该还有其他代码在别的地方,比如处理你的 PictureBoxPanel 的其他事件的代码。 - King King
我找到的关于picturebox或panel的唯一代码如下:private void Form1_Resize(object sender, EventArgs e) {pictureBox_viewer.Size = panel_viewer.Size; if (viewerSize != Size.Empty) {viewerSize = pictureBox_viewer.Size;} } 它是用于在调整窗体大小时将pictureBox适配到panel的。 - Marco Frost
显示剩余5条评论
1个回答

4

好的。当我重新调整图像尺寸时,如何将其适配到表单中?我需要更新图片框的大小,这也带来了我的第一个问题。我说得对吗? :) - Marco Frost
当图像被重新调整大小时,需要什么?PAN(用户可以使用鼠标拖动滚动图像)还是PictureBox中的滚动条? - A G
第二张图片有什么问题吗?它似乎被放大了,看起来还好啊。 - A G
1
需要滚动条。 - Marco Frost
第二个问题:图像只有白色部分...灰色部分是背景。问题是,图像离表单的边框太远了。 - Marco Frost

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接