Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Всех приветствую. В рамках моей дипломной работы я должен осуществить рисование параллелограмма как одного из элементов блок-схемы. Казалось бы, дело проще палёной репы, но беда в том, что способ рисования геометрических фигур через 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, 15:39   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,041
Репутация: 2054

icq: 216409213
По умолчанию

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

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

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

icq: 216409213
По умолчанию

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

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

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

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

Последний раз редактировалось MrMaroon; 18.06.2018 в 17:32.
MrMaroon вне форума   Ответить с цитированием
Старый 18.06.2018, 18:02   #6
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,041
Репутация: 2054

icq: 216409213
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в канвасе 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
Параллелограмм Серафимий Долговяз Паскаль 0 15.02.2009 18:59
Как вывести на канвасе текст не с белым, а прозрачным фоном? Altera Общие вопросы Delphi 2 29.03.2008 21:21


08:35.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru