0

我在表单上有滚动面板和面板上的图片框。当我将 SizeMode 分配给 CenterImage 时,滚动不起作用,当分配给 AutoSize 时,图片不在中心。

是否有可能同时制作 - 能够滚动和图片放置在中心?

4

1 回答 1

0

您可以尝试使用这个简单的面板控件来处理您的两个要求:

public class PanelImage : Panel {
  private Image image;

  public PanelImage() {
    this.DoubleBuffered = true;
    this.ResizeRedraw = true;
  }

  public Image Image {
    get { return image; }
    set { 
      image = value;
      if (image != null) {
        this.AutoScrollMinSize = image.Size;
      }
      this.Invalidate();
    }
  }

  protected override void OnPaint(PaintEventArgs e) {
    e.Graphics.Clear(Color.White);
    if (image != null) {
      Point p = this.AutoScrollPosition;
      if (image.Width < this.ClientSize.Width) {
        p.X = (this.ClientSize.Width / 2) - (image.Width / 2);
      }
      if (image.Height < this.ClientSize.Height) {
        p.Y = (this.ClientSize.Height / 2) - (image.Height / 2);
      }
      e.Graphics.DrawImage(image, p);
    }
    base.OnPaint(e);
  }
}
于 2013-06-25T20:25:04.937 回答