Вам нужны полосы прокрутки в пользовательском элементе управления, поэтому, когда пользовательский элемент управления меньше, чем изображение, показанное в окне Picurebox, пользователь может прокрутить, чтобы увидеть другие части изображения, верно?А также, когда пользовательский элемент управления больше, чем графический блок, вы хотите, чтобы графический блок заполнил пользовательский элемент управления (чтобы вы не могли отловить события мыши на графическом блоке).Правильно?
Прежде всего, вы также можете подписаться на событие мыши на пользовательском элементе управления (в дополнение к графическому блоку), чтобы выполнить желаемое действие.Если это не применимо, вы можете сделать следующее:
Обработать событие Resize пользовательского элемента управления и изменить аспекты графического блока:
(поместите это в свой пользовательский элемент управления)
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
MaintainPictureBoxSize();
}
private void MaintainPictureBoxSize()
{
pictureBox1.SizeMode = PictureBoxSizeMode.Normal;
pictureBox1.Location = new Point();
pictureBox1.Size = new Size();
var clientSize = this.ClientSize;
if (pictureBox1.Image == null)
pictureBox1.Size = clientSize;
else
{
Size s = pictureBox1.Image.Size;
pictureBox1.Size = new Size(
clientSize.Width > s.Width ? clientSize.Width : s.Width,
clientSize.Height > s.Height ? clientSize.Height : s.Height);
}
}
Также вызывайте метод MaintainPictureBoxSize
при изменении Image
PictureBox
.
Эффект этого происходит, когда ширина или высота изображения, отображаемого в графическом окне,меньше, чем пользовательский элемент управления, окно изображения будет расширяться, чтобы заполнить пользовательский элемент управления, и если нет, размер окна изображения будет размером изображения, поэтому отображаются полосы прокрутки.