Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: laha93Ответов: 1

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

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

  • Пожалуйста, опубликуйте любой код, попробуйте jsfiddle.net DontVoteMeDown 26.06.2013

winformspanelpicturebox

Ответы

Ответ 1 · LarsTech

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы