C# 如何将图片居中对齐,同时将其大小模式指定为自动大小?

C# 如何将图片居中对齐,同时将其大小模式指定为自动大小?,c#,winforms,panel,picturebox,C#,Winforms,Panel,Picturebox,我在表格上有滚动面板,在面板上有图片盒。当我将SizeMode指定给CenterImage时,滚动不起作用,当指定给AutoSize时,图片不在中心 有没有可能使两者都可以-能够滚动并将图片放在中间?您可以尝试使用这个简单的面板控件,它将满足您的两个要求: public class PanelImage : Panel { private Image image; public PanelImage() { this.DoubleBuffered = true; thi

我在表格上有滚动面板,在面板上有图片盒。当我将SizeMode指定给CenterImage时,滚动不起作用,当指定给AutoSize时,图片不在中心


有没有可能使两者都可以-能够滚动并将图片放在中间?

您可以尝试使用这个简单的面板控件,它将满足您的两个要求:

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);
  }
}
公共类PanelImage:Panel{
私有图像;
公众形象(){
this.DoubleBuffered=true;
this.ResizeRedraw=true;
}
公众形象{
获取{返回图像;}
集合{
形象=价值;
如果(图像!=null){
this.AutoScrollMinSize=image.Size;
}
这个。使无效();
}
}
受保护的覆盖无效OnPaint(PaintEventArgs e){
e、 图形。清晰(颜色。白色);
如果(图像!=null){
点p=此自动旋转位置;
if(image.Width
请发布任何代码,尝试jsfiddle.net