Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движение изображения. Обновляем по таймеру, переодически проходят полосы. 
V
    Опции темы
MoZy
Дата 4.8.2006, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как бы сделать чтобы этих полос не было и откуда они берутся? smile 
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
GremlinProg
Дата 4.8.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



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


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Sheff
Дата 4.8.2006, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 503
Регистрация: 25.3.2002
Где: Зеленоград

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



MoZy, создай в памяти HDC ассоциируй с ним bitmap и рисуй на нём, а потов в OnDraw или на WM_PAINT не знаю как там у тебя рисуй из HDC в памяти на окне или где нужно...
Т.е сначала:
Код

  if(!pDC) pDC = GetDC();
   if(!m_memDC.m_hDC) m_memDC.CreateCompatibleDC(pDC);
   if(!m_bmp.m_hObject) m_bmp.CreateCompatibleBitmap(pDC, TotalSize.cx, TotalSize.cy);
   m_memDC.SelectObject(&m_bmp);
   if(!m_bkbrush.m_hObject) m_bkbrush.CreateStockObject(WHITE_BRUSH);
   m_memDC.SelectObject(&m_bkbrush);
   m_memDC.PatBlt(0, 0, TotalSize.cx, TotalSize.cy, PATCOPY);

Потом в OnDraw:
Код

pDC->BitBlt(0, 0, TotalSize.cx, TotalSize.cy, &m_memDC, 0, 0, SRCCOPY);



--------------------
--------------------------
Шеф всегда прав :)
PM MAIL WWW ICQ   Вверх
MoZy
Дата 4.8.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



битмап маленький. таймер быстрый. а эти полосы... периодически появляются, причем период больше чем у таймера в несколько раз.

Цитата

Выводи изображение в окно через двойной буфер


каким это образом? Мне надо по таймеру и чтоб окно не было "прозрачным" от этого двойного буфера. И полосы все равно проходят:
user posted image

Это иммитация, так как соскриншотить не получается

Sheff, спасибо за идейку )) Я как видишь вроде как тоже сначала операции в скрытом хдц делаю, а потом на главный вовожу, но чтоб ВСЕ делать на скрытом (то есть все движения, все декорации  smile ), а потом только на главный выводить в види одного питмапа я че-то не допер  smile 

Спасибо!

Это сообщение отредактировал(а) MoZy - 4.8.2006, 22:27
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
GremlinProg
Дата 4.8.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



Цитата(MoZy @  5.8.2006,  00:21 Найти цитируемый пост)
каким это образом?

Sheff, показал каким

еще лучше перехватить сообщение WM_ERASEBKGND и не вызывать для него обработку "по-умолчанию", вместо этого, вернуть 1. Так задний фон не будет перекрашиваться каждый раз, когда требуется обновить окно.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Sheff
Дата 5.8.2006, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 503
Регистрация: 25.3.2002
Где: Зеленоград

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



MoZy, ты делаешь что-то типа игры ?
Тогда лучше вообще наверное DirectX юзать или OGL т.к GDI очень прожорлив


--------------------
--------------------------
Шеф всегда прав :)
PM MAIL WWW ICQ   Вверх
MoZy
Дата 8.8.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Sheff, конечно прожорлив, но пока и так сойдет  smile 

Это сообщение отредактировал(а) MoZy - 8.8.2006, 19:58
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
OXOTHUK
Дата 10.8.2006, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



MoZy, в DirectX(я думаю имеется в виду Direct3D) и в OpenGL тебе придётся работать с 3х мерной графикой. А так как ты мутил на GDI, предполагаю тебе легче и сподручнее 2х мерную. Тогда надо использовать DirectDraw. Он в принципе простой, но у меня появились проблемы с поворотом изображения на угол и выводом текста. Правда в GDI если при прорисовке указать RECT source нормальный, а dest меньше, то появляются какие-то чёрные полосы, а в DirectDraw такого нет, поэтому путём несложных мат. вычислений, можно сделать один движок, но при задании разного разрешения экрана, он будет просто сжимать изображение и поэтому не придётся их двигать чтоб уместились в экране. Правда я не знаю, может тормозить он от этого больше станет?
PM MAIL   Вверх
Sheff
Дата 10.8.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 503
Регистрация: 25.3.2002
Где: Зеленоград

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



OXOTHUK, DirectDraw уже не поддерживается в последних версиях библиотек DirectX, вся его функциональность была перенесена в Direct3D. Ему нужно юзать Direct3D или OpenGL в ORTHO режиме, OpenGL - графическая библиотека, и предназначена для программирования не только 3-х мерной графики.


--------------------
--------------------------
Шеф всегда прав :)
PM MAIL WWW ICQ   Вверх
OXOTHUK
Дата 10.8.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Sheff, ну ему ж никто не запрещаяет пользоваться DirectDraw 4 или 5. Работать - работает и быстро. А сам он проще.
PM MAIL   Вверх
Fixin
Дата 10.8.2006, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Цитата(OXOTHUK @  10.8.2006,  15:35 Найти цитируемый пост)
4 или 5
Последний ДД был в 7й версии, это первое. И второе:
Модератор: еще одно сообщение не по теме - закрою топик

PM MAIL ICQ   Вверх
MoZy
Дата 10.8.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Fixin, все по теме  smile  просто топик называется по-другому.

OXOTHUK, я не хочу менять разрешение.

А на счет скорости GDI меня она устраивает, ведь там есть волшебные Get/SetDIBits, что обеспечивает свободу действия в достаточной мере, чтоб свои библиотеки забацать.

Но тема действиетльно закрыта  smile 

Спасибо.
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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