Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дрожание при выводе грфики 
:(
    Опции темы
midiar
Дата 20.12.2005, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.10.2005

Репутация: нет
Всего: нет



Добрый день!

У меня есть битмап, на котором я рисую и потом вывожу его на канву. Если это происходит часто, то изображение дрожит. Как этого можно избежать?
PM MAIL   Вверх
Snowy
Дата 20.12.2005, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Код

  Form1.DoubleBufered:=true;

PM MAIL   Вверх
midiar
Дата 20.12.2005, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.10.2005

Репутация: нет
Всего: нет



Я редактирую компонент, а он унаследован от TGraphicControl.
PM MAIL   Вверх
Snowy
Дата 20.12.2005, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Цитата(Snowy @ 20.12.2005, 12:29)
DoubleBufered:=true;

Если наследовать от TWinControl.
Если нет, то используй GDI+ или посмотри, как сделано в TWinControl.WMPaint во второй части - где при DoubleBufered.
PM MAIL   Вверх
midiar
Дата 20.12.2005, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.10.2005

Репутация: нет
Всего: нет



Я посмотрел и ничего не понял, я не умею хорошо работать с графикой. Но я все рисую и так в памяти на битмап, а потом вывожу ее с помощью BitBlt. Что там нужно сделать дополнительно?
PM MAIL   Вверх
Snowy
Дата 20.12.2005, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Перед рисованием вызывай
Код

function BeginPaint(hWnd: HWND; var lpPaint: TPaintStruct): HDC; stdcall;


После рисования
Код

function EndPaint(hWnd: HWND; const lpPaint: TPaintStruct): BOOL; stdcall;


TPaintStruct заполнять не нужно - просто отдай переменную этого типа бегину, а потом ее же енду.

BeginPaint вернет тебе DC, на котором нужно делать BitBlt.
PM MAIL   Вверх
midiar
Дата 20.12.2005, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.10.2005

Репутация: нет
Всего: нет



А handle чей передавать?
PM MAIL   Вверх
Snowy
Дата 20.12.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Owner'a я полагаю. Получается, что ты на нем рисуешь, раз уж у тебя не WinControl...
Или Parenta. Попробуй и того и другого.
PM MAIL   Вверх
midiar
Дата 20.12.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.10.2005

Репутация: нет
Всего: нет



Не помогает, я пробовал и код из TWinControl.WMPaint адаптировать, тоже не помогает. Здесь что-то другое smile
PM MAIL   Вверх
Snowy
Дата 20.12.2005, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Попробуй присвоить DoubleBufered:=true паренту или Owner'у. (или обоим сразу).
PM MAIL   Вверх
midiar
Дата 20.12.2005, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.10.2005

Репутация: нет
Всего: нет



Ага, получилось, спасибо smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.