Итак, я пытаюсь создать небольшой график, который я разрешу пользователю добавлять случайные строки и т. Д. В качестве учебного проекта. Самая неприятная часть - это выяснить, как получить масштабирование в/из для работы - у меня есть переменная ZoomScale, привязанная к колесу мыши, и она «работает», но я хотел бы иметь возможность маркировать ось в зависимости от того, насколько они масштабировать и вычислять измерения расстояния (метры, см и т. д., потому что у меня есть переменная MM на пиксель, поэтому мы должны уметь это вычислять), поэтому она должна быть более точной наукой, чем просто «она работает»,Расчет увеличения и извлечения
double X1 = ((actualline[i].X1 + actualWidth - VisibleXMax - VisibleXMin) * ZoomScale); //Calculate modified coordinates based on
double X2 = ((actualline[i].X2 + actualWidth - VisibleXMax - VisibleXMin) * ZoomScale); // window width, window height, Visible X/Y, and Zoom.
double Y1 = ((actualline[i].Y1 + actualHeight - VisibleYMax - VisibleYMin) * ZoomScale);
double Y2 = ((actualline[i].Y2 + actualHeight - VisibleYMax - VisibleYMin) * ZoomScale);
Вместо того, чтобы пытаться работать с этим давайте попробуем с помощью простого 1 одномерного уравнения и я могу повторно написать, что для й и у.
Так позволяет сказать, что мы имеем 5 единиц широкую линию в направлении х
. . . . .
В настоящее время, занимающем весь наш экран (а окно на самом деле). От 0 до 5 полностью. Теперь пользователь прокручивается, чтобы увеличить в первые 3 единицы. Теперь эти 3 устройства должны заполнить все окно, так как пользователь будет масштабироваться. Он должен выглядеть следующим образом через окно
. . .
Так originially линия была x1 = 0, x2 = 5. 0 до 5. А поскольку наше окно 5 единиц в ширину она заполняет окно. Теперь пользователь хочет видеть только единицы x1 = 0 до x2 = 3. От 0 до 3. Но мы хотим, чтобы эти юниты растягивались по всему окну, поэтому с помощью какого-то вычисления масштабирования (например, выше) мы хотим превратить 0,3 в 0,5, используя доступные переменные. Переменные являются:
Окно Ширина (5 единиц в данном случае)
Оригинальный X1 и X2 (0 и 5 в данном случае)
Видимый Х мин и макс (0 и 3 в этом случае)
И масштаб масштабирования, который равен 1 и увеличивается до 0,05 при каждом прокрутке вверх.
Любые предложения?
@FirstStep OK звуки хорошо! Не спешите! – Fivestar