Главная страница
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.006 c
15-1286656151
Юрий
2010-10-10 00:29
2011.01.23
С днем рождения ! 10 октября 2010 воскресенье


2-1288557388
Unknown_user
2010-10-31 23:36
2011.01.23
Delphi 2009 и PAnsiChar


2-1289080453
NewZ
2010-11-07 00:54
2011.01.23
Как нарисовать стрелку?


2-1288744271
Германн
2010-11-03 03:31
2011.01.23
TApplication событие OnHint


2-1288670744
George
2010-11-02 07:05
2011.01.23
Форматирование ввода в TDBEdit