Как выровнять изображение по центру и одновременно назначить режим автоматического размера?

У меня есть панель на форме для прокрутки и картинка на панели. Когда я назначаю SizeMode для CenterImage, прокрутка не работает, а при назначении AutoSize изображение не находится в центре.

Есть ли возможность сделать и то, и другое - чтобы можно было прокручивать, а изображение помещать в центр?


person laha93    schedule 25.06.2013    source источник
comment
Пожалуйста, опубликуйте любой код, попробуйте jsfiddle.net   -  person DontVoteMeDown    schedule 26.06.2013


Ответы (1)


Вы можете попробовать использовать этот простой элемент управления 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);
  }
}
person LarsTech    schedule 25.06.2013