|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 3, 2003 14:09:31 Есть необходимоть строить много кривых. Если я рисую функциями ГДИ (LineTo..) напрямую в контекст экрана. То выходит все очень медленно и дерганно. Еще пробую создать в памяти совместимый контекст и вставляю туда совместимый битмап и там рисую. А когда надо копирую все на экран. Этот метод шустрый, но когда нужно рисовать очень длинный график битмап отжирает огромное колличество памяти. И при изменении размера - перерисовки всего - тормозит зверски. Как обычно рендерят графику? может использовать директХ? |
|
|
Дата: Апр 4, 2003 04:22:54 копирую все на экран ... нужно рисовать очень длинный график битмап отжирает огромное колличество памяти Т.е. Вы рисуете и копируете не только видимую часть? Когда Ваша программа занимается рисованием в совместимый контекст? В отдельном потоке или в ответ на WM_PAINT/WM_ERASEBKGND/...? |
|
|
Дата: Апр 4, 2003 07:42:46 я рисую в обработчике WM_SIZE. Рисую всё. А вот копирую на экран при обработке WM_PAINT только видимую часть. |
|
|
Дата: Апр 4, 2003 09:10:27 в обработчике WM_SIZE. Рисую всё. Почему все? Картинка статичная или динамичная? |
|
|
Дата: Апр 4, 2003 19:53:45 Строго говоря - рисовать надо только в WM_PAINT. Причем использовать GDI Tools Caching и RectVisible() для оптимизации. Если в процессе редактирования изменился документ - InvalidateRect() + UpdateWindow() тут же вызовут WM_PAINT напрямую. |
|
|
Дата: Апр 7, 2003 15:17:41 А можно поподробнее о GDI Tools Caching и RectVisible(). Про эти тулс я нигде не слышал. |
|
|
Дата: Апр 7, 2003 19:40:35 Как часто пишут: while (...) { HPEN hPen = CreatePen (...); SelectObject (hDC, hPen); MoveToEx (...); LineTo (...); DeleteObject (hPen); } И так рисуют 1000 линий или больше. Лучше было-бы держать HPEN извне, удалив из цикла CreatePen() и DeleteObject(). То же самое и с другими: HBRUSH, HFONT, HBITMAP... 2. Любой объект может быть заключен в RECT. RectVisible(HDC, RECT*) возвращает TRUE если RECT виден в данном HDC при данной обработке WM_PAINT. Таким образом, не все рисуется, а только видимые объекты. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.068 |