| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > [GDI+] DrawImage - странный эффект при отрисовке |
| Автор: ksili 31.3.2009, 10:04 | ||
| Не знаю в том ли подфоруме я спрашиваю... В приложении на C++ (MFC) используется GDI+ для масштабирования и отрисовки фоновых рисунков. Кроме всяких рисуночков и изображений шапок форм есть рисунок основного фона. Он на самом деле меньше всех форм, поэтому при отрисовке растягивается. Так вот было замечено, что при его отрисовке, он сначала рисуется в некотором одном и том же месте экрана (не окна приложения, а в глобальных координатах!) нерастянутый, а потом уже нормально отбражается форма приложения. При этом предыдущая косячная отрисовка исчезает. Но видна она только в тех местах, где это пересекается с формой приложения. Т.е. если эти области не пересекаются, то никакого эффекта не видно. При масштабе экрана 96dpi (стандартный) область, где сначала отрисовывается эта неотмасштабированная картинка вот такая: http://ipicture.ru/Gallery/Viewfull/16557122.html При масштабе 120dpi соответственно побольше: http://ipicture.ru/Gallery/Viewfull/16557173.html Вот в таком случае взаимного положения окна приложения и этой области никакого неприятного эффекта нет: http://ipicture.ru/Gallery/Viewfull/16557257.html Вот в таком случае левую отрисовку видно в заштрихованной области: http://ipicture.ru/Gallery/Viewfull/16557339.html Отрисовка выполняется так:
Логгированием я проверил, что кординаты в DrawImage всегда одинаковые. Т.е. никаких выездов за форму нет. Кто-нибудь сталкивался с таким? Может это стандартный глюк GDI+ и уже известно как его лечить? В приложении несколько диалогов, все они наследники этого CBaseDlg и глюк проявляется только в некоторых из них. |