Хорошо, это усложняется, так что я буду писать полный ответ:
Плагин не является открытым в пути можно зацепить на зумирование событий. Фактическая вещь Вы можете сделать (поскольку у вас есть открытые источники), чтобы «взломать» внутри - изменить исходный код и приспособиться к вашим потребностям.
Варианты:
1. Изменение внутренней реализации:
Получить в файл ScalablePictureBoxImp.cs
, найти метод ScalePictureBoxToFit()
, и добавьте коды после строки:
//some previous code
this.pictureBox.Left = left;
this.pictureBox.Top = top;
this.AutoScroll = true;
// add this line under:
this.AutoScrollPosition = new Point(this.Width/2, this.Height/2);
Теперь Вы можете просто использовать компонент, как и раньше, и он будет делать все, просто с их изменением размера в середине (возможно, потребуется немного больше математики, чтобы он соответствовал экрану).
2. Изменить внешний реализация:
Автор является Ussing обертку для внутренней реализации, где он перекинув на события и Вы просто с помощью обернутого объекта (это аналогично нажатию кнопки на мыши вместо того, чтобы соединять 1 провод с другим).
В файле ScalablePictureBox.cs
редактировать конструктору и добавить следующие реализации:
public ScalablePictureBox()
{
//some code ...
this.pictureTracker.ScrollPictureEvent += new PictureTracker.ScrollPictureEventHandler(this.scalablePictureBoxImp.OnScrollPictureEvent);
this.pictureTracker.PictureTrackerClosed += new PictureTracker.PictureTrackerClosedHandler(this.pictureTracker_PictureTrackerClosed);
//Enter the line below to hook on event
this.scalablePictureBoxImp.ZoomRateChangedEvent += ScalablePictureBoxImp_ZoomRateChangedEvent;
}
Теперь вы зацепили на случай масштабирования, и Вам просто нужно настроить прокрутку:
private void ScalablePictureBoxImp_ZoomRateChangedEvent(int zoomRate, bool isFullPictureShown)
{
this.scalablePictureBoxImp.AutoScrollPosition = new Point(this.Width/2, this.Height/2);
}
Внутренняя реализация ScalablePictureBox вызывает событие ZoomRateChangedEvent
-> Как только это изменение масштаба изменится, вы получите размер окна и переместите кнопки прокрутки в среднее положение. Это можно настроить любым способом, который вам нужен.
Я считаю, что оригинал автора хотел написать только ScalablePictureBoxImp
и обертка была добавлена только для целей теста/просто для случая. Это полностью зависит от вас, если вы напишете все сами или настроите -> Правильный путь должен использовать внешнюю реализацию.
Вы используете 'WinForms' или' WPF'? – Tatranskymedved
@Tatransymedved Winforms – help
Из опубликованной статьи есть 2 варианта: вы можете либо загрузить исходный код и изменить его, так что вы сосредоточите изображение на себе. ИЛИ Вы можете создать обертку для функций масштабирования функций. Как только кнопка будет нажата, вы вызовете масштаб, а затем переместите камеру (изображение) в правильные координаты. – Tatranskymedved