Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2018, 13:22   #1
MrMaroon
Новичок
Джуниор
 
Регистрация: 27.04.2018
Сообщений: 2
По умолчанию Параллелограмм на канвасе

Всех приветствую. В рамках моей дипломной работы я должен осуществить рисование параллелограмма как одного из элементов блок-схемы. Казалось бы, дело проще палёной репы, но беда в том, что способ рисования геометрических фигур через LineTo(x + сколько-то, y + столько-то) не прокатит, ибо нижеприведённый код отрисовки параллелограмма по координатам бесполезен, поскольку при увеличении размера фигуры меняется угол наклона вертикальных линий (оно и понятно).
Код:
  t1.X := self.X;
  t1.Y := self.Y;
  t2.X := self.Xk + 15;
  t2.Y := self.Y;
  t3.X := self.Xk;
  t3.Y := self.Yk;
  t4.X := self.X - 15;
  t4.Y := self.Yk;
  DC.MoveTo(t1.X, t1.y);
  DC.LineTo(t2.X, t2.Y);
  DC.LineTo(t3.X, t3.Y);
  DC.LineTo(t4.X, t4.Y);
  DC.LineTo(t1.X, t1.Y);
Как мне отрисовать параллелограмм так, чтобы заодно с увеличением размера фигуры оставался неизменным угол наклона линий? Я пробовал реализовать через функции синуса и косинуса, но результат оставался неизменным.
Исходник программы прилагаю.
FormChart Builder.zip
MrMaroon вне форума Ответить с цитированием
Старый 18.06.2018, 14:39   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от MrMaroon Посмотреть сообщение
поскольку при увеличении размера фигуры меняется угол наклона вертикальных линий (оно и понятно).
Чего? Какие углы меняют при увеличение размера фигуры? Какие вертикальные линии? Вы знаете, что такое параллелограмм?
p51x вне форума Ответить с цитированием
Старый 18.06.2018, 15:28   #3
mihаli4
никакой
Пользователь
 
Аватар для mihаli4
 
Регистрация: 21.05.2018
Сообщений: 35
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Чего? Какие углы меняют при увеличение размера фигуры? Какие вертикальные линии? Вы знаете, что такое параллелограмм?
Зря так горячитесь, ТС абсолютно прав. Просто под "вертикальными" он имел в виду те, которые не горизонтальны.
А вот вам следует освежить в памяти, что
Цитата:
Параллелогра́мм (др.-греч. παραλληλόγραμμον от παράλληλος — параллельный и γραμμή — линия) — это четырёхугольник, у которого противоположные стороны попарно параллельны, то есть лежат на параллельных прямых. Частными случаями параллелограмма являются прямоугольник, квадрат и ромб.
У ТС затруднения в сохранении неизменности углов при изменении размера сторон...
З.Ы. Кстати, ведь любой параллелограмм можно так повернуть, что пара сторон будет строго вертикальна.

Последний раз редактировалось mihаli4; 18.06.2018 в 15:35.
mihаli4 вне форума Ответить с цитированием
Старый 18.06.2018, 15:35   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от mihаli4 Посмотреть сообщение
Зря так горячитесь, ТС абсолютно прав.
В чем?

Цитата:
Сообщение от mihаli4 Посмотреть сообщение
А вот вам следует освежить в памяти, что
Я это наизусть со школы знаю. И? Где в общем случае прямые линии. А учитывая, что в коде ТС строится "наклонным", то вы очень тупо выглядите.

Цитата:
Сообщение от mihаli4 Посмотреть сообщение
У ТС затруднения в сохранении неизменности углов при изменении размера сторон...
А какие трудности? Углы просто не меняются. Или вы опять ступили и у ТС трудности с вычисление "следующей" точки?
p51x вне форума Ответить с цитированием
Старый 18.06.2018, 16:25   #5
MrMaroon
Новичок
Джуниор
 
Регистрация: 27.04.2018
Сообщений: 2
По умолчанию

Да, я практически дырявый пень в геометрии, признаюсь честно, но я пытался разобраться в плане "как надо сделать", несмотря на нехватку практических знаний. Я и не просил всё полностью сделать за меня, но хотя бы как минимум дать наводку, если уж больно принципиальны.

Последний раз редактировалось MrMaroon; 18.06.2018 в 16:32.
MrMaroon вне форума Ответить с цитированием
Старый 18.06.2018, 17:02   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Наводка: взять листок, начертить и записать. Например:
Пусть нижняя левая точка имеет координаты (0, 0)
Правая нижняя будет (новая_длина1, 0)
Первая верхняя: треугольник на базе (0, 0), этой точки и конце высоты в старых размерах и новых подобны, а значит стороны пропорциональны; находим коэффициент, новую высоту и y точки; x легко найти из длины вектора
Вторая верхняя у совпадает с предыдущей, а x = х_предыдущей + новая_длина1.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в канвасе Putin-mode Общие вопросы C/C++ 29 21.11.2013 08:24
Клавиши в канвасе treut Java Мобильная разработка (Android) 1 24.03.2012 00:55
Конструктор на канвасе Heming Помощь студентам 5 07.07.2010 00:35
Параллелограмм Серафимий Долговяз Паскаль, Turbo Pascal, PascalABC.NET 0 15.02.2009 17:59
Как вывести на канвасе текст не с белым, а прозрачным фоном? Altera Общие вопросы Delphi 2 29.03.2008 20:21