Главная страница
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-1288452814
strannik2
2010-10-30 19:33
2011.01.23
Чем TArrayString отличается от TArray<string> ?


15-1285088334
Nic
2010-09-21 20:58
2011.01.23
ЯД-> wmz


2-1288779266
Евгений007
2010-11-03 13:14
2011.01.23
не работает getmem


15-1285962349
vuk
2010-10-01 23:45
2011.01.23
Немного про то как мотались в Монголию


2-1287567902
ixen
2010-10-20 13:45
2011.01.23
FIBDatabase.QueryValue как в нем использовать параметры?