BREND Опубликовано 6 марта, 2005 Жалоба Поделиться Опубликовано 6 марта, 2005 Как создать линию со стрелкой в Canvas? Ссылка на комментарий Поделиться на другие сайты Поделиться
Kuzmich Опубликовано 6 марта, 2005 Жалоба Поделиться Опубликовано 6 марта, 2005 Нарисуй линию и отходящие от нее две линии... Ссылка на комментарий Поделиться на другие сайты Поделиться
BREND Опубликовано 6 марта, 2005 Автор Жалоба Поделиться Опубликовано 6 марта, 2005 Поправка все линии - Runtіme объекты!!! Знаю только координаты начальной и конечной точки. Ссылка на комментарий Поделиться на другие сайты Поделиться
Kuzmich Опубликовано 6 марта, 2005 Жалоба Поделиться Опубликовано 6 марта, 2005 Ну и что... От конечной точки проводи немного в сторону маленькие линии... Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей Плоткин Опубликовано 6 марта, 2005 Жалоба Поделиться Опубликовано 6 марта, 2005 { Отрисовка стрелки с заданными параметрами// рисует стрелку с заданными параметрами// X_Line, Y_Line - координаты "неподвижного" конца линии стрелки;// Length_Line, Length_Arrow - длина линии и бокового ребра стрелки;// Angle_Line, Angle_Arrow - углы между линией стрелки и горизонтальной// осью и между линией стрелки и боковым ребром стрелки;// IsAllTriangle - если True, то "подвижные" концы боковых рёбер стрелки// соединяются отрезком прямой(и не рисуется высота равнобедренного треугольника стрелки);// DrawSurface - поверхность на которой будет рисоваться стрелкаЗависимости: ничего неожиданного************************************************ }procedure DrawArrow(X_Line, Y_Line, Length_Line, Length_Arrow: Integer; Angle_Line, Angle_Arrow: Extended; IsAllTriangle: Boolean; DrawSurface: TCanvas);var XB, YB, XE, YE, XM, YM: Integer;begin XB := Round(X_Line + Cos(Angle_Line) * Length_Line); YB := Round(Y_Line - Sin(Angle_Line) * Length_Line); XM := Round(XB - Cos(Angle_Arrow - Angle_Line) * Length_Arrow); YM := Round(YB - Sin(Angle_Arrow - Angle_Line) * Length_Arrow); XE := Round(XB + Sin(Angle_Arrow + Angle_Line - Pi / 2) * Length_Arrow); YE := Round(YB + Cos(Angle_Arrow + Angle_Line - Pi / 2) * Length_Arrow); DrawSurface.MoveTo(X_Line, Y_Line); if IsAllTriangle then begin DrawSurface.LineTo(Round((XM + XE) / 2), Round((YM + YE) / 2)); DrawSurface.MoveTo(XB, YB); end else DrawSurface.LineTo(XB, YB); DrawSurface.LineTo(XM, YM); if IsAllTriangle then DrawSurface.LineTo(XE, YE) else DrawSurface.MoveTo(XE, YE); DrawSurface.LineTo(XB, YB)end; Яndex - найдется все :) Ссылка на комментарий Поделиться на другие сайты Поделиться
BREND Опубликовано 10 марта, 2005 Автор Жалоба Поделиться Опубликовано 10 марта, 2005 Текст хороший, но может ли быть угол и длина линии, если линия рисуется мышкой. Повторяю - дано начальные и конечные координаты. Если нельзя нарисовать стрелку, то так и скажите. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ray Опубликовано 10 марта, 2005 Жалоба Поделиться Опубликовано 10 марта, 2005 BREND Имея конечные и начальные координаты линии, ты запросто можешь определить ее длину, и необходимые углы... Вспомни азы аналитической геометрии... Ссылка на комментарий Поделиться на другие сайты Поделиться
Kuzmich Опубликовано 10 марта, 2005 Жалоба Поделиться Опубликовано 10 марта, 2005 2BREND А что, сложно додумать самому? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти