Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.01.23;
Скачать: CL | DM;

Вниз

Как нарисовать стрелку?   Найти похожие ветки 

 
NewZ   (2010-11-07 00:54) [0]

Как нарисовать стрелку, т.е. линию на конце которой указательный треугольник и которая может быть направлена в любую сторону 8-( ??? Желательно, чтобы стрелка была красивой :-) .


 
Германн ©   (2010-11-07 02:43) [1]

А где нарисовать? На бумаге?

> Желательно, чтобы стрелка была красивой

Тут художник нужен.
Хотя, как говорил мастер на одежной фабрике Карасик: "художественный - это от слова худо". :)


 
Юрий Зотов ©   (2010-11-07 02:44) [2]

F1: TCanvas: MoveTo, LineTo.
И школьная математика для расчета координат.

Есть другой вариант: показывать заранее подготовленную картинку в TImage.


 
Eraser ©   (2010-11-07 03:33) [3]

> [2] Юрий Зотов ©   (07.11.10 02:44)

чтобы повернуть картинку нужна будет уже не школьная математика ;-)


 
Германн ©   (2010-11-07 03:55) [4]


> Eraser ©   (07.11.10 03:33) [3]
>
> > [2] Юрий Зотов ©   (07.11.10 02:44)
>
> чтобы повернуть картинку нужна будет уже не школьная математика
> ;-)
>

Для 2D и школьная сойдёт.


 
NewZ   (2010-11-07 16:09) [5]

Так я и думал!!! Одни умники - сами то можете нарисовать стрелку? Задача не тривиальная. "Школьная математика для расчёта координат" - напиши хотя-бы одну формулу. Сможешь не заглянув в учебник? MoveTo(), LineTo() - а координаты? - X1, Y1, X2, Y2 - концы стрелки (дано), X2, Y2, X3, Y3, X4, Y4 - треугольная стрелка. Здесь уже 2 пары координат неизвестны. Определите их!!!


 
Eraser ©   (2010-11-07 17:08) [6]

> [5] NewZ   (07.11.10 16:09)

LMD, школота )


 
sniknik ©   (2010-11-07 17:24) [7]

> Определите их!!!
http://webfile.ru/4879667


 
NewZ   (2010-11-07 18:19) [8]


> sniknik
>
> http://webfile.ru/4879667
>


Не могу скачать архив!!! Битый наверное.


 
DVM ©   (2010-11-07 18:24) [9]


> Битый наверное.

все там с архивом нормально


 
Игорь Шевченко ©   (2010-11-07 23:51) [10]


> сами то можете нарисовать стрелку?


Можем. Школьной математики достаточно.

Ленивые могут скачать из инета рисовалку аналоговых часов - там как раз со стрелками (и с расчетом координат, если что)


 
Юрий Зотов ©   (2010-11-07 23:59) [11]

> NewZ   (07.11.10 16:09) [5]

> Так я и думал!!! Одни умники
Как выяснилось, не одни.

> сами то можете нарисовать стрелку?
Сто баксов - и через пару часов я прямо здесь выложу программу. Идет?


 
картман ©   (2010-11-08 01:38) [12]


> Юрий Зотов ©   (07.11.10 23:59) [11]

а стрелка со-стразами будет?


 
stas ©   (2010-11-08 11:29) [13]

>NewZ   (07.11.10 00:54)
может это поможет...
когда-то писал, честно говоря уже непомню что как, но работает ))
f -угол в градусах на который надо повернуть стрелку.

Procedure TCustomSensor.DrawStr;
 var x1,y1,x2,y2,x3,y3,x4,y4,d:Integer; f:Real;
 begin
 F:=FPosition;
 d:=db-10;
 X1:=GetCoordX (d,xc,f)-xc;
 Y1:=GetCoordY (d,yc,f)-yc;
 X2:=(GetCoordX (d,xc,f)+xc);
 Y2:=(GetCoordY (d,yc,f)+yc);
 X3:=GetCoordX (d,X1+xc,f-177);
 Y3:=GetCoordY (d,Y1+yc,f-177);
 X4:=GetCoordX (d,X1+xc,f+177);
 Y4:=GetCoordY (d,Y1+yc,f+177);
 FBitMap.Canvas.Brush.Color:=FColorArrow;
 FBitMAp.Canvas.pie(X1,Y1,X2,Y2,X3,Y3,X4,Y4);
 FBitMap.Canvas.Brush.Color:=FLineColor;
 FBitMAp.Canvas.Ellipse(Xc-4,Yc-4,Xc+4,Yc+4);
 end;

Function TCustomSensor.GetCoordX (D,Xc:Integer;fz:Real):Integer;
begin
 Result:=Round(Xc-(cos(DegToRad(fz))*(d/2)));
end;

Function TCustomSensor.GetCoordY (D,Yc:Integer;fz:Real):Integer;
begin
 Result:=Round(Yc-(sin(DegToRad(fz))*(d/2)));
end;


 
stas ©   (2010-11-08 11:37) [14]

В итоге будет такая вот стрелочка:
http://piccy.info/view3/691117/4ad4da43ff52b15ebe8f5b6be059654b/


 
12 ©   (2010-11-08 11:46) [15]

такое искали, на freelancer было тестовое задание
но там для нас только. Бишкек не катил, вроде :)


 
le creuset   (2010-11-08 12:41) [16]

NewZ   (07.11.10 00:54)  

>линию на конце которой указательный треугольник и которая может быть направлена в любую сторону

Нужно вращать координаты треугольника и линии с помощью матрицы вращения (http://en.wikipedia.org/wiki/Rotation_matrix , простые афинные преобразования и алгоритмы заливки по-моему еще проходят на курсах компьютерной графики). Другое дело, что маленький треугольник без антиальасинга не всегда будет выглядеть красиво (зависит так же от используемого алгоритма рисования линии, поэтому придется либо делать антиальасинг либо хитро рисовать его по линиям, рассчитывая координаты каждой).


 
antonn ©   (2010-11-08 12:53) [17]

стрелка - http://desksoft.ru/index.php?drkb=348&id=3569&str_path=0|336|343|345|348&w



Страницы: 1 вся ветка

Текущий архив: 2011.01.23;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.008 c
2-1288286941
Scott Storch
2010-10-28 21:29
2011.01.23
масштабирование


2-1289220381
12
2010-11-08 15:46
2011.01.23
запрос к двум файлам Excel через ADO


15-1286314640
Германн
2010-10-06 01:37
2011.01.23
Trial Delphi


2-1288724567
SIV5000
2010-11-02 22:02
2011.01.23
Контекстное меню


11-1218819651
KOLBOSS
2008-08-15 21:00
2011.01.23
Cookies Synapse