绘制图形和滚动的C#面板

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (127)

我希望能够使用面板或类似的绘制图形到Winform。如果图形变得比控件大,我似乎看不到任何关于添加滚动条的内容。

是否可以使用面板来完成此操作,或者是否有类似的控件允许这样做?

谢谢

提问于
用户回答回答于

将AutoScroll属性设置为true,将AutoScrollMinSize属性设置为图像大小。当图像太大时,滚动条将自动显示。

你需要从Panel继承你自己的类,以便在构造函数中将DoubleBuffed属性设置为true。否则闪烁会很明显。一些示例代码:

using System;
using System.Drawing;
using System.Windows.Forms;

class ImageBox : Panel {
    public ImageBox() {
        this.AutoScroll = true;
        this.DoubleBuffered = true;
    }
    private Image mImage;
    public Image Image {
        get { return mImage; }
        set {
            mImage = value;
            if (value == null) this.AutoScrollMinSize = new Size(0, 0);
            else {
                var size = value.Size;
                using (var gr = this.CreateGraphics()) {
                    size.Width = (int)(size.Width * gr.DpiX / value.HorizontalResolution);
                    size.Height = (int)(size.Height * gr.DpiY / value.VerticalResolution);
                }
                this.AutoScrollMinSize = size;
            }
            this.Invalidate();
        }
    }
    protected override void OnPaint(PaintEventArgs e) {
        e.Graphics.TranslateTransform(this.AutoScrollPosition.X, this.AutoScrollPosition.Y);
        if (mImage != null) e.Graphics.DrawImage(mImage, 0, 0);
        base.OnPaint(e);
    }
}
用户回答回答于

我不是100%确定你想要完成什么,但是这里有一个相似的问题可以帮助你。

你也可以尝试使用PictureBox,随着图形变大,你将手动更改其大小。然后将你的表单AutoScroll设置为true。

扫码关注云+社区

领取腾讯云代金券