Из того, что я вижу в вашем коде, вам не нужен какой-либо специальный код для управления прокруткой чертежа.
Во-первых, вам нужно добавить дочернюю панель внутри вашего usercontrol, которая будет контейнером.рисунка.Таким образом, вы перемещаете чертежный код на эту панель.Вы должны убедиться, что эта панель изменит свой размер, если рисунок должен быть больше.Это то, что будет отображать полосы прокрутки в usercontrol.
Во-вторых, вы должны установить для свойства AutoScroll вашего usercontrol значение True.Это обеспечит прокрутку любого дочернего элемента управления, имеющего размер или положение, превышающее размер пользовательского элемента управления.Посмотрите на свойство AutoScrollMargin тоже.Это делается автоматически с помощью фреймворка, поэтому никакой другой код не требуется.Разве это не красиво?
Наконец, вы можете удалить две добавленные полосы прокрутки.
Редактировать: Более того, при рисовании вам не нужно компенсировать положение прокрутки.Вы просто рисуете с происхождением 0,0, не заботясь о свитке.Кроме того, выполнение этого способа предотвратит любое мерцание, вызванное постоянным перерисовыванием.