Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2012, 23:01   #1
hiho
Форумчанин
 
Регистрация: 29.04.2008
Сообщений: 100
По умолчанию Затухающая линия

Здравствуйте. Появилась необходимость нарисовать пульс человека, не используя DirectX. То есть стандартными возможностями дельфи. Сам алгоритм уже реализовал, осталось доделать только красивости. Чтобы линия рисовалась не сплошным цветом, а меняла прозрачность. Примерно так. Никто не поможет кодом, а то я уже всю голову сломал.

PS: Также хотелось бы и светящуюся точку в начале текущей линии. Это не обязательно, но желательно =)
hiho вне форума Ответить с цитированием
Старый 29.02.2012, 06:22   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Если правильно понял, то тебе нужно рисовать методами Canvas.
Вот накидал по шустрому. Использован таймер с интервалом в 100 милисекунд.
Тут рисуется прямая линия с изменением прозрачности. Подгоняй под свою формулу отрисовки пульса.
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Color:=clBlack;
x:=-70;
y:=30;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
begin
// закрашиваем нарисованное ранее
  canvas.Pen.Color:=$000000; // черный
  canvas.Brush.Color:=$000000; // черный
  canvas.Ellipse(x+69,y-1,x+71,y+1);// рисуем круг чёрного цвета
 for I := 0 to  50 do
  canvas.Pixels[x+i,y]:=clBlack;

  x:=x+11; // чем больше прибавишь, тем быстреее будет бегать

// рисуем на новом месте
 for I := 0 to  70 do
  canvas.Pixels[x+i,y]:= (i*256*2);
  {  разъяснение. Все цвета, как ты знаешь, получаются смешением
   цветов RGB. 00ff00 в 16-ричной СС соответствует зелёному цвету.
   Чтобы получить градиент от черного к зелёному нам нужны числа
   от 000000 до 00ff00.  256 в 10-чной СС = 100 или 000100 в 16-чной СС.
   Умножая 256 на i мы как раз и будем получать этот градиент.
   Множитель 2 в формуле (i*256*2) использован для бОльшего интервала чисел зелёного цвета.
   Если множитель убрать, то получишь более тусклые оттенки зелёного.
   }
  canvas.Pen.Color:=$00ffff;// жёлтый
  canvas.Brush.Color:=$00ffff; // жёлтый
  canvas.Ellipse(x+69,y-1,x+71,y+1); // рисуем круг жёлтого цвета
  if x>form1.width then x:=-70;
end;
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 29.02.2012 в 06:28.
Rin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Линия IvaneOK Паскаль, Turbo Pascal, PascalABC.NET 1 18.05.2011 14:11
боьшая линия waffe66 HTML и CSS 1 27.03.2010 19:22
Линия SheriffCat Microsoft Office Word 8 22.10.2009 19:20
Линия тренда maxic Microsoft Office Excel 0 15.09.2009 18:23
Линия на осях 4ifir01 Мультимедиа в Delphi 3 08.12.2008 17:24