Установка размера большого пальца полосы прокрутки в wpf на основе масштабирования - PullRequest
1 голос
/ 02 апреля 2012

В моем графическом приложении есть область холста с графиком. Полосы прокрутки, связанные с x-cordinate и y-cordinate, должны быть синхронизированы с этой областью области просмотра холста (где присутствует график). Когда пользователь нажимает кнопку масштабирования, график увеличивается и уменьшается. Теперь проблема заключается в настройке полосы прокрутки для этого масштабирования. При увеличении или уменьшении масштаба область просмотра полосы прокрутки должна синхронизироваться с процентом увеличения.

Как установить размер большого пальца полосы прокрутки в этом случае. У меня есть свойство Максимум , Минимум и Значение полосы прокрутки и всю ширину и высоту графика с помощью zoomfactor.

Как установить ViewportSize или размер большого пальца полосы прокрутки?

Я использовал приведенный ниже фрагмент кода для получения ViewportSize, но он не точный

mScrollBarY.ViewportSize = (double)yAxis.CurrentValueRange;

, где CurrentValueRange дает увеличенный видимый диапазон.

1 Ответ

3 голосов
/ 02 апреля 2012

Здесь я вижу два подхода:

  1. Окно просмотра остается одинаковым, в то время как экстент увеличивается при увеличении и уменьшается до размера окна при уменьшении.Таким образом, вам нужно обновить Максимум
  2. Экстент остается тем же, в то время как область просмотра увеличивается до размера экстента при уменьшении масштаба и уменьшается при увеличении.

РЕДАКТИРОВАТЬ

В обоих вариантах вам необходимо определить некоторый коэффициент, который нужно увеличить или уменьшить на.Пусть это будет scale_factor .Вот способ обновления ScrollBar:

void updateScrollBar()
{
    scrollBar.Minimum = 0;
    scrollBar.Maximum = extent;
    scrollBar.ViewportSize = viewport * scale_factor;
    scrollBar.SmallChange = 10 * scale_factor;
}

Обработчик увеличения:

scale_factor /= 2;
updateScrollBar();

Обработчик уменьшения:

scale_factor *= 2;
updateScrollBar();

Кстати, я нашелследующая формула на форуме msdn :

ThumbSize = TrackLength * ViewportSize / (Maximum - Minimum + ViewportSize)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...