Автор Тема: Изменение масштаба рисования  (Прочитано 1859 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Inf-root

  • Глобальный модератор
  • Коллежский советник
  • *****
  • Сообщений: 571
  • Репутация: 21
  • Пол: Мужской
Изменение масштаба рисования
« : ЅЮпСам 06, 2008, 12:21:33 am »
Возникла такая ситуация. Есть несколько типов объектов, несложных, они имеют координаты Х и У, отрисовывются средствами ГДИ+. И имеется возможность изменения масштаба отображения. Вопрос: Как эту возможность реализовать? Умножая координаты всех объектов на коэффициент масштаба, получаем ровное смещение всех объектов,  на долю этого коэффициента. А нужно чтобы расстояние между объектами также менялось. Вообще возникла мысль, взять какую либо точку. И смещать все объекты в ее сторону на коэффициент масштаба. Но что-то мне подсказывает что есть другой вариант, у кого какие мысли?
В старости нет лучшего утешения,
чем сознание того, что все силы в
молодости отданы делу, которое не
стареет.
(с) Артур Шопенгауэр (немецкий философ)

Оффлайн melkiy

  • Глобальный модератор
  • Действительный статский советник
  • *****
  • Сообщений: 1124
  • Репутация: 24
  • Пол: Мужской
Re: Изменение масштаба рисования
« Ответ #1 : ЅЮпСам 06, 2008, 02:15:19 am »
Насколько я понимаю, возможность масштабирования имеется в самой ГДИ+.
В MFC я использовал функции для установки логического начала координат и логических масштабов по осям, CDC::SetViewportExt, CDC::SetViewportOrg, CDC::SetWindowExt, CDC::SetWindowOrg. Установив один раз систему координат, потом можно никакие координаты ни на что не домножать.
... Есть пауки, которые плетут ловчие сети, и есть пауки-бродяги. В любом случае они хЫщники.

Оффлайн Inf-root

  • Глобальный модератор
  • Коллежский советник
  • *****
  • Сообщений: 571
  • Репутация: 21
  • Пол: Мужской
Re: Изменение масштаба рисования
« Ответ #2 : ЅЮпСам 06, 2008, 08:10:03 am »
А все таки как руками?
В старости нет лучшего утешения,
чем сознание того, что все силы в
молодости отданы делу, которое не
стареет.
(с) Артур Шопенгауэр (немецкий философ)

Оффлайн melkiy

  • Глобальный модератор
  • Действительный статский советник
  • *****
  • Сообщений: 1124
  • Репутация: 24
  • Пол: Мужской
Re: Изменение масштаба рисования
« Ответ #3 : ЅЮпСам 06, 2008, 03:00:43 pm »
Умножая координаты всех объектов на коэффициент масштаба, получаем ровное смещение всех объектов,  на долю этого коэффициента. А нужно чтобы расстояние между объектами также менялось.

Если ты координаты всех объектов домножаешь на один и тот же коффициент, то и расстояния изменяются во столько же раз. Конечно, если все объекты задаются в одной и той же системе координат.
... Есть пауки, которые плетут ловчие сети, и есть пауки-бродяги. В любом случае они хЫщники.

Оффлайн Inf-root

  • Глобальный модератор
  • Коллежский советник
  • *****
  • Сообщений: 571
  • Репутация: 21
  • Пол: Мужской
Re: Изменение масштаба рисования
« Ответ #4 : ЅЮпСам 06, 2008, 03:37:05 pm »
Цитировать
Если ты координаты всех объектов домножаешь на один и тот же коффициент, то и расстояния изменяются во столько же раз. Конечно, если все объекты задаются в одной и той же системе координат.

Ушел учить матчасть :)
melkiy +1
В старости нет лучшего утешения,
чем сознание того, что все силы в
молодости отданы делу, которое не
стареет.
(с) Артур Шопенгауэр (немецкий философ)