Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.06.2009, 14:34
Fonoman Fonoman вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 21
Репутация: 10
Вопрос Рисуем след

У меня вопрос
как сделать что бы за кружком следую
рисовалась линия

Код:
var t:real;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 t:= t + Timer1.Interval/1000;
 Shape1.Top := round(50*sin(t))+300;
 Shape1.Left := round(50*cos(t))+300;
end;

end.
Ответить с цитированием
  #2  
Старый 17.06.2009, 22:04
Fonoman Fonoman вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 21
Репутация: 10
По умолчанию

Все спят что ли (
Я вот мучаюсь нефига не получается
Ответить с цитированием
  #3  
Старый 17.06.2009, 22:15
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  t:= t + Timer1.Interval/1000;
  Shape1.Top := round(50*sin(t))+300;
  Shape1.Left := round(50*cos(t))+300;
  Canvas.LineTo((Shape1.Left shl 1 + Shape1.Width) shr 1,
                (Shape1.Top shl 1 + Shape1.Height) shr 1);
end;
Ответить с цитированием
  #4  
Старый 18.06.2009, 00:14
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Nyctos Kasignete, я тож так подумал, но сам Shape своей прорисовкой перекрывает (стирает) Canvas. С Canvas никогда не приходилось работать, но че- то пост заинтересовал. Как сделать линию канвы постоянной?
Ответить с цитированием
  #5  
Старый 18.06.2009, 10:00
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Чтобы линия не затиралась объектом Shape, можно поступать по-разному... Можно линию отрисовывать не на Canvas формы, а, например, на прозрачном TImage (со всеми последствиями). А можно (предпочтительнее) на отдельном Bitmap в памяти, который затем отрисовывать на Canvas'е. Вот как-то так, наверное:
Код:
var
  Form1: TForm1;
  t: real;
  Bmp: TBitmap;

..................

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  t := t + Timer1.Interval/1000;
  Shape1.Top := round(50*sin(t))+300;
  Shape1.Left := round(50*cos(t))+300;
  Application.ProcessMessages;
  Bmp.Canvas.LineTo(Shape1.Left + Shape1.Width shr 1,
                    Shape1.Top + Shape1.Height shr 1);
  Canvas.Draw(0, 0, Bmp);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  t := 0;
  Bmp := TBitmap.Create;
  Bmp.Width := ClientWidth; Bmp.Height := ClientHeight;
  Bmp.Transparent := True;
  Shape1.Top := round(50*sin(t))+300;
  Shape1.Left := round(50*cos(t))+300;
  Bmp.Canvas.MoveTo(Shape1.Left + Shape1.Width shr 1,
                    Shape1.Top + Shape1.Height shr 1);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Bmp.Free;
end;
Ответить с цитированием
  #6  
Старый 18.06.2009, 14:43
Fonoman Fonoman вне форума
Прохожий
 
Регистрация: 12.06.2009
Сообщения: 21
Репутация: 10
По умолчанию

Спасибо за пример
но он сильно проц грузит = )
Ответить с цитированием
  #7  
Старый 18.06.2009, 14:54
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Оптимизируйте изображение. Если вам нужно от него только рисование линии, вообще сделайте его битовым, т.е. монохромным. После вызова конструктора напишите Bmp.Monochrome := True; можете уменьшить размеры, но тогда, возможно, придется внести небольшие поправки в код.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:07.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter