Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> стрелки в графе 
V
    Опции темы
EDG_aka_Dima
Дата 21.12.2007, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.12.2007

Репутация: 1
Всего: 1



Подскажите пожалуйста, сижу прогу пишу и что то никак не додумаю как это написать:
рисую линию  form1.Canvas.LineTo и нужно сделать стрелочку из конечной точки в виде двух коротеньких линий под углом... какая то стрелка, а мозг не может придумать формулу smile 

PM MAIL   Вверх
EDG_aka_Dima
Дата 22.12.2007, 03:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.12.2007

Репутация: 1
Всего: 1



Таки найдено хорошее решение:
Код

...
var Arrow: array[0..2] of TPoint;
    SX, SY, EX, EY: integer;
    TanOfAngle: Extended;
    Angle, D, R: Extended;
    ...
begin
  ...
  if SX = EX then TanOfAngle:=MaxExtended / 100 * Sign(SY - EY)
  else TanOfAngle:=(SY - EY) / (SX - EX);
  D:=Sqrt(Sqr(SX - EX) + Sqr(SY - EY));
  EX:=Round((R * SX + (D - R) * EX) / D);
  EY:=Round((R * SY + (D - R) * EY) / D);
  Arrow[0].X:=EX;
  Arrow[0].Y:=EY;
  Angle:=ArcTan(TanOfAngle) + 0.2;
  if SX < EX then Angle:=Angle + Pi;
  Arrow[1].X:=EX + Round(20 * Cos(Angle));
  Arrow[1].Y:=EY + Round(20 * Sin(Angle));
  Angle:=ArcTan(TanOfAngle) - 0.2;
  if SX < EX then Angle:=Angle + Pi;
  Arrow[2].X:=EX + Round(20 * Cos(Angle));
  Arrow[2].Y:=EY + Round(20 * Sin(Angle));
  ACanvas.Polygon(Arrow);
end;


где:
SX, SY - координаты начала линии
EX, EY - координаты конца линии
R - расстояние от конца стрелки до конца отрезка
ACanvas - канва, на которой надо рисовать



взято с www.delphikingdom.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0807 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.