![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про радар. [D5, D6, Win95/98]
Карлсон © (2002-06-28 00:07:00)Здравствуйте!
Поискал на сайте, нашел ответ на сабж. в форуме.
Вот ссылка http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1016984862&n=7
Конечно выглядит хорошо, но.
Кто-нибудь делал радар используя просто Image а не канвас?
Ну т.е. есть картинка радара, есть картинка линейки, которая крутится по нему, есть картинка с объектом для появления на радаре.
Те механизмы поворотов изображения, которые я нашел, не подходят, т.к. либо нету транспарента, либо при повороте картинки наблюдается очень сильное мигание изображения, особенно в быстром режиме работы.
Поделитесь своими мнениями плиз, т.к.очень хочется сделать игрушку с радаром.
Карлсон (2002-06-28 18:43:00) [1]2 MBo: а можешь пояснить буквально каждую строчку кода, а то я плохо понимаю, как рисуется эта линия.
я в коде кое-что подредактировал, ну чтобы можно было выводить просто на канвас картинки одну лишь линию.
вот какой у меня получился код:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
DoubleBuffered:=True;
x0:=205;
y0:=205;
r:=200;
phi:=0;
oldx:=355;
oldy:=205;
with Image1.canvas do begin
for i:=5 downto 1 do
moveto(x0,y0);
pen.color:=clAppWorkSpace;
pen.mode:=pmNotXor;
lineto(oldx,oldy);
end;
timer1.enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(phi,1);
if phi=360 then phi:=0;
with Image1.canvas do begin
moveto(x0,y0);
lineto(oldx,oldy);
oldx:=x0+trunc(r*cos(degtorad(phi)));
oldy:=y0-trunc(r*sin(degtorad(phi)));
moveto(x0,y0);
lineto(oldx,oldy);
end;
end;
И еще одно.
Я так и не понял, каким образом появляются мишени.
У меня почему-то ничего не появляется для ОнМаусАп.
Буду очень благодарен за разьяснение вопроса.
MBo (2002-06-28 06:23:00) [2]Стартовые принципы я там показал, а уж на canvas формы рисовать или на image, или вообще свой компонент сделать - дело хозяйское.