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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2011, 15:02   #1
Sholar
 
Регистрация: 11.12.2011
Сообщений: 5
По умолчанию Максимально быстрая отрисовка битмапа(GDI).

Средствами GDI нужно максимально быстро отрисовать некоторое количество прямоугольников на рабочем столе. В качестве теста скомпилировал кодес, который отрисовывает один единственный прямоугольник. Тормоза были жуткие. Вот код отрисовки:
PHP код:
RECT rc;
while(
1)
{
     
rc.bottom yStart+32;
     
rc.left  xStart;
     
rc.right xStart+32;
     
rc.top yStart;
BitBlt
hdcxStartyStartptSize.xptSize.y
hdcMemptOrg.xptOrg.ySRCCOPY 
);
xStart += 0.01;
InvalidateRect(NULL,&rc,TRUE);

Я что-то делаю не так, или средствами GDI мою задачу не решить в принципе?
Sholar вне форума Ответить с цитированием
Старый 11.12.2011, 15:57   #2
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Цитата:
while(1)
WTF ???????????
f.hump вне форума Ответить с цитированием
Старый 11.12.2011, 16:02   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вечный цикл, хотя такое обязано лагать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.12.2011, 16:14   #4
Sholar
 
Регистрация: 11.12.2011
Сообщений: 5
По умолчанию

Цитата:
вечный цикл, хотя такое обязано лагать.
Почему обязано лагать? По идее оно просто должно вечно отрисовывать мой прямоугольник, и раз в 100 итераций цикла сдвигать его на пиксель вправо. Разве не так?
Sholar вне форума Ответить с цитированием
Старый 11.12.2011, 16:45   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну вы представляете сколько раз в секунду вы гоняете ваши данные?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.12.2011, 16:48   #6
Sholar
 
Регистрация: 11.12.2011
Сообщений: 5
По умолчанию

Цитата:
ну вы представляете сколько раз в секунду вы гоняете ваши данные?
Хмм, я думал над этим, ограничивал таймером, чтобы рисовалось лишь десять раз в секунду, но лаги не исчезают. Можете кинуть пример, где на дисплее(поверх всех окон) грамотно отрисовывался бы битмап?
Sholar вне форума Ответить с цитированием
Старый 11.12.2011, 16:53   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тупо на GetDC(0) рисовать не стоит.
так как чуть что оно стирается.
правильнее создавать окошко под это.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.12.2011, 17:09   #8
Sholar
 
Регистрация: 11.12.2011
Сообщений: 5
По умолчанию

В моем случае нужно рисовать на рабочем столе небольшие битмапы, но чтоб это не мешало пользователю кликать по ярлыкам и т.д., поэтому вариант с соданием окна не подходит.
Sholar вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение битмапа Miha85193 Общие вопросы Delphi 12 23.02.2011 13:20
Получить хендл битмапа tuip Общие вопросы C/C++ 1 27.01.2011 15:45
быстрая сортировка настолько быстрая Serg12 Помощь студентам 8 28.03.2010 21:31
запись битмапа в файл SunKnight Общие вопросы Delphi 8 09.06.2008 08:56
Сжатие битмапа Rapid Мультимедиа в Delphi 7 08.12.2007 16:38