Форум Кумертау-City.ru: Бегущая строка на Делфи - Форум Кумертау-City.ru

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Бегущая строка на Делфи кодинг графики Оценка: -----

#1 Пользователь офлайн   Ruslan 

  • Местный
  • PipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 52
  • Регистрация: 05 September 04
  • Репутация: 0

Отправлено 03 September 2005 - 18:40

Уважаемые люди.
Мне нужна помощь в создании бегущей строки поверх всех окон.
Я делаю так:

procedure TForm1.DrawTextDC(x, y: integer; color: TColor; txtMsg : String; clsT : integer);
var
DC : HDC;
Canv : TCanVas;
OldBkMode : integer;
begin
Canv := TCanVas.Create ;
DC := GetDC (0);
Canv.Handle := DC;
with Canv do
begin
if clsT = 1 then
begin
Font.Color := Color;
Font.Size := 32;
Font.Name := 'Arial';
OldBkMode := SetBkMode(canv.Handle, TRANSPARENT);
TextOut(x, y, txtMsg);
InvalidateRect(DC, nil, False);
SetBkMode(Handle, OldBkMode);
ReleaseDC(0, DC);
end
else
begin
InvalidateRect(DC, nil, False);
ReleaseDC(0, DC);
end;
Free;
end;
end;

и таймером рисую

procedure TForm1.Timer1Timer(Sender: TObject);
begin
DrawTextHDC(x, y, clBlue, 'Бегущая Строка',0);
if x > 0 then
x := x - 5
else
begin
x := w;
y := h-200;
end;
DrawTextHDC(x, y, clBlue, 'Бегущая Строка',1);
end;

так вот после прогона стороки, у меня остаётся полоса. Как её убрать. Или посоветуйте другой код программы. Заранее блогадарен.
  • +
  • 0

#2 Пользователь офлайн   /\/\ 

  • Местный
  • PipPip
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 85
  • Регистрация: 11 April 03
  • Репутация: 0

Отправлено 03 September 2005 - 22:33

Попробуй перед выводом надписи сохранять кусок GetDC(0). Потом им и сотрешь свою надпись.
  • +
  • 0

#3 Пользователь офлайн   Ruslan 

  • Местный
  • PipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 52
  • Регистрация: 05 September 04
  • Репутация: 0

Отправлено 03 September 2005 - 23:53

/\/\ (03 September 2005, 22:33) писал:

Попробуй перед выводом надписи сохранять кусок GetDC(0). Потом им и сотрешь свою надпись.
Просмотр сообщения



Так как его сохранить этот кусок дескопа GetDC (0)? Знал бы я. :bigwink:
  • +
  • 0

#4 Пользователь офлайн   /\/\ 

  • Местный
  • PipPip
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 85
  • Регистрация: 11 April 03
  • Репутация: 0

Отправлено 04 September 2005 - 01:45

Так ты его присвоил в Canv: TCanvas, а у него есть метод CopyRect (кажется), координаты надписи ты знаешь, размеры можешь определить, вот и копирую например в переменную BitMap: TBitMap;
  • +
  • 0

#5 Пользователь офлайн   [aim] 

  • куда-то пропал
  • PipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 683
  • Регистрация: 07 April 05
  • Репутация: 1

Отправлено 11 September 2005 - 01:17

Есть прога(с pas-ми файлами), может понадобится, напиши почтовый ящик, скину. Разбираться самому неахота, да она и не большая. Делал давно, и дельфи устанавливать неохота чтобы сделать бегущую строку. Программа использует API функции. Вместо рисований линий попробуй поставить свой текст, а потом перерисовывай экран.
  • +
  • 0

#6 Пользователь офлайн   Ruslan 

  • Местный
  • PipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 52
  • Регистрация: 05 September 04
  • Репутация: 0

Отправлено 14 September 2005 - 12:30

[aim] (11 September 2005, 1:17) писал:

Есть прога(с pas-ми файлами), может понадобится, напиши почтовый ящик, скину. Разбираться самому неахота, да она и не большая. Делал давно, и дельфи устанавливать неохота чтобы сделать бегущую строку. Программа использует API функции. Вместо рисований линий попробуй поставить свой текст, а потом перерисовывай экран.
Просмотр сообщения



Если не влом то скинь pas файлы, погляжу, мож что и выйдет у меня. :swoon:
Скинь на мыло [email protected]. :happy:

Заренее спасибо. Жду :secret:
  • +
  • 0

#7 Пользователь офлайн   [aim] 

  • куда-то пропал
  • PipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 683
  • Регистрация: 07 April 05
  • Репутация: 1

Отправлено 14 September 2005 - 20:31

Усё, отправил на [email protected]
Делал в 7-ой версии
  • +
  • 0

#8 Пользователь офлайн   Ruslan 

  • Местный
  • PipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 52
  • Регистрация: 05 September 04
  • Репутация: 0

  Отправлено 15 September 2005 - 01:03

[aim] (14 September 2005, 20:31) писал:

Усё, отправил на [email protected]
Делал в 7-ой версии
Просмотр сообщения

Принял твой исходник, спасибо. :secret:
  • +
  • 0

#9 Пользователь офлайн   ARTem 

  • Участник
  • PipPipPip
  • Вставить ник
  • Цитировать
  • Группа: Участник
  • Сообщений: 104
  • Регистрация: 09 April 04
  • Репутация: 0

Отправлено 07 November 2005 - 01:39

полоску Refreshом можно убрать...

А если хочешь на PrimaryDC работать (его получаешь GetDC(0)) то почитай MSDN про графику... SaveDC ReleseDC и т.д.

добавлено:
А вообще я бы на твоем месте не делал бы себе лишний гемор...

Сделал прозрачную форму и двигай по ней Label (или PictureBox для картинки)
  • +
  • 0

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых