如何在中心对齐图片并同时将其尺寸模式指定为自动尺寸?

时间:2013-06-25 19:46:38

标签: c# winforms panel picturebox

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

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

1 个答案:

答案 0 :(得分:0)

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

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);
  }
}