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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2009, 15:04   #1
mflat
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 71
Сообщение Canvas. Неправильное отображение. Мельканий нет, но вывод нечёткий.

Здравствуйте. Дело в том, что мой Bitmap выводиться на Image странным образом. Мельканий не происходит, но сам мяч отображается нечётко и не так, как должен. Выкладываю проект программы.
Кто знает в чём ошибка - скажите пожалуйста.
Заранее спасибо.
Вложения
Тип файла: rar Program.rar (1.6 Кб, 67 просмотров)
╓-----┴-----╜
mFlat
mflat вне форума Ответить с цитированием
Старый 07.02.2009, 18:16   #2
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Для начала не мешает сделать нормальный интерфейс. По крайней мере, обеспечить способ закрытия программы.
Jeni вне форума Ответить с цитированием
Старый 07.02.2009, 19:22   #3
mflat
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 71
По умолчанию

Это не программа. Это тестовый вариант. Интерфейс в этом примере не имеет значения. Главное: решение проблемы отображения.
Кстати, мячик можно взять(нажать на него мышкой), передвигать, и отпускать(будет опять падать, если вы его высоко поднимете)
╓-----┴-----╜
mFlat

Последний раз редактировалось mflat; 07.02.2009 в 20:15.
mflat вне форума Ответить с цитированием
Старый 07.02.2009, 20:41   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Посмотрите тему
http://programmersforum.ru/showthread.php?t=29446
И еще - у вас крайне неудачно подобраны цвета.
Попробуйте то же самое на белом фоне - будет гораздо лучше.
mihali4 вне форума Ответить с цитированием
Старый 07.02.2009, 20:59   #5
mflat
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 71
По умолчанию

Вот как раз на белом фоне у меня и было , но я решил попробовать как будет смотреться падение на других фонах. А тему сейчас почитаю.
╓-----┴-----╜
mFlat
mflat вне форума Ответить с цитированием
Старый 08.02.2009, 10:59   #6
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Вы все изменения , связанные с движением делаете непосрндственно на канве рисунка.Этот подход не верен, так как такая двойная перерисовка (стереть старое изображение и нарисовать новое) приводит к двойной смене цвета пикселей, что в результате и приводит к нечеткости изображения и миганию.Все изменения следует производить
на невидимом объекте ( например на канве буфера типа TBitMap), и только после выводить на видимую канву Image или формы.Посмотрите во вложении материал.
Вложения
Тип файла: rar Устранение эффекта мигания(!).rar (63.1 Кб, 109 просмотров)
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 08.02.2009, 12:31   #7
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Устранение эффекта мигания(!).rar - очень полезно ! От себя благодарю.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 08.02.2009, 13:53   #8
mflat
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 71
По умолчанию

Устранение эффекта мигания(!).rar . Dekot, большое спасибо.
╓-----┴-----╜
mFlat
mflat вне форума Ответить с цитированием
Старый 08.02.2009, 14:37   #9
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Спрошу уж тогда тут...

Вот например есть некая формула...
По этой формуле в TBitmap рисуется изображение: цикл в цикле, пробегаются все точки холста, ставится пиксель с цветом определяющимся по формуле...
После этого "выводим его на холст TImage" меняем параметры формулы и рисуем следующий "кадр"...

Как можно обеспечить максимальную скорость "смены кадров"..? Многое перепробовал, но самый лучший полученный результат не совсем устраивает...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 08.02.2009, 14:55   #10
mflat
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 71
По умолчанию

Взято из DelphiWorld 6:
Как быстро выводить графику (a то Canvas очень медленно работает)
Код:
Вот пример заполнения формы точками случайного цвета:
type
  TRGB = record
    b, g, r: byte;
  end;
  ARGB = array[0..1] of TRGB;
  PARGB = ^ARGB;

var
  b: TBitMap;

procedure TForm1.FormCreate(sender: TObject);
begin
  b := TBitMap.Create;
  b.pixelformat := pf24bit;
  b.width := Clientwidth;
  b.height := Clientheight;
end;

procedure TForm1.Tim1OnTimer(sender: TObject);
var
  p: PARGB;
  x, y: integer;
begin
  for y := 0 to b.height - 1 do
  begin
    p := b.scanline[y];
    for x := 0 to b.width - 1 do
    begin
      p[x].r := random(256);
      p[x].g := random(256);
      p[x].b := random(256);
    end;
  end;
  canvas.draw(0, 0, b);
end;

procedure TForm1.FormDestroy(sender: TObject);
begin
  b.free;
end;
Не знаю поможет тебе или нет, но здесь вывод графики быстрый.
╓-----┴-----╜
mFlat
mflat вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение скрытых файлов и папок и отображение розширения всех файлов beegl Общие вопросы Delphi 10 14.12.2008 22:02
Неправильное считывание текстуры. Все размытою GamerSuper Gamedev - cоздание игр: Unity, OpenGL, DirectX 15 08.02.2008 12:37
Неправильное отображение шрифта chingiz Общие вопросы Delphi 2 25.01.2008 18:47
Canvas Zven Общие вопросы Delphi 9 06.12.2007 10:40