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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 22.05.2015, 12:37
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Цитата:
Сообщение от angvelem
Примерно так.

Спасибо, тоже самое что и у меня, единственное, стоило перенести отрисовку фона в процедуру с таймером и вуаля, заработало

ЗЫ
Кстати, двойной битмап фиксит еще, наверное, такой глюк, который я заметил - это удлинение хвостика буквы Р

Последний раз редактировалось Vayrus, 22.05.2015 в 12:42.
Ответить с цитированием
  #17  
Старый 22.05.2015, 12:38
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
А я без второго битмапа обошелся, бе-бе-бе.

И как же, я так и хотел изначально?
Ответить с цитированием
  #18  
Старый 22.05.2015, 12:44
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Так
Код:
procedure TForm1.OutText(Canvas : TCanvas; S: string; xoffset, yoffset: Integer);
var
  T: string;
begin
  // InValidateRect(Bmp.Canvas.handle,NIL,True);
  with Canvas do
  begin
    // oldbkmode := SetBkMode(Handle, Transparent);
    if Copy(S, 1, 1) = '#' then
    begin
      T := Copy(S, 2, Length(S));
      Font.Color := $000576DC; // делаем цвет оранжевым
      // SetBkMode(Handle, TRANSPARENT);
      TextOut((ClientWidth - maxlen { TextExtent(S).cx } ) div 2 - 10 - xoffset,
        yoffset { + fontsize } { TextExtent(S).cy } , T);
    end
    else
    begin
      Font.Color := clWhite;
      // SetBkMode(Handle, TRANSPARENT);
      TextOut((ClientWidth - maxlen { TextExtent(S).cx } ) div 2 - xoffset,
        yoffset { + fontsize } { TextExtent(S).cy } , S);
    end;
    // SetBkMode(Handle, oldbkmode);
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  offset: Integer;
begin
  y := y - 1;
  if y = -maxh then
    y := Height;
  { else if y = 10 then
    Sleep(1000); }
  offset := y;
  //
  bmBkGnd.Canvas.Draw(0, 0, bmTemp);
  Canvas.Draw(0, 0, bmBkGnd); // вырисовываем на форме объект Bitmap }
  OutText(Canvas, 'Привет', 0, offset);
  Inc(offset, interval);
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #19  
Старый 22.05.2015, 12:56
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

У вас тоже явное мерцание есть при таком подходе?
Ответить с цитированием
  #20  
Старый 22.05.2015, 12:58
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Сейчас проверю.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #21  
Старый 22.05.2015, 12:59
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Двойную буферизацию ставьте, не будет мерцать.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #22  
Старый 22.05.2015, 13:05
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Как и сказано выше, с буферизацией не мерцает.
Хотя нет. С двумя битмапами гораздо лучше.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 22.05.2015 в 13:10.
Ответить с цитированием
  #23  
Старый 22.05.2015, 13:28
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Двойную буферизацию ставьте, не будет мерцать.

Стояло уже, но всеравно, с 2 лучше выходит
Ответить с цитированием
  #24  
Старый 22.05.2015, 13:29
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Всем участникам Спасибо)
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter