Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 4

Как заставить не затирать окном полученную графику в GDI?

23.08.2007, 21:03. Показов 5460. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Первый раз столкнулся с GDI и вот никак не могу допереть как заставить не затирать окном полученную графику...
Графика выводиться потоком по указателю в диалоговое окно. Насколько я понял, тама надо что-то с OnDraw'ом делать, а вот что, да как не пойму...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.08.2007, 21:03
Ответы с готовыми решениями:

Как заставить объекты масштабироваться вместе с окном?
Итак, дорогие мастера кодинга на с++, совсем ламерский вопрос: Как заставить объекты, например sTabSheet масштабироваться вместе с...

Как заставить метод общаться с окном?
Привет, у меня есть метод который с помощью события создает окно и передает в его данные, мне нужно.. 1. Вызвать окно и передать данные....

GDI+ заставить морагть фигуру...
подскажите как в GDI+ заставить морагать фигуру (например Rectangle)

5
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 4
24.08.2007, 18:46  [ТС]
Ладно попробую перефразировать...
У меня есть интерфейс который пораждает дочернее немодальное диалоговое окно...Есть поток, который сидит и ловит инфу...Ету инфу он выводит по ссылке(в поток я пердал ссылку на основной интерфейс) в дочернем диалоговом окошке...оть..Все замечательно, но при перерисовке естественно все пропадает. Я перекопал уже пол нета и н-ое кол-во книг, но как действительно бороться с етой проблемой так и не допер...Единственное что смог уловить - надо рисовать в растр и потом уже его выводить, но как тоже толком не понял...Есть добрый человек, который поможет разобраться что да как? Заранее спасибо...
0
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
28.08.2007, 18:16
а что вы собственно рисуете на форме диалога?



Принцип работы оконного интерфейса windows, как впрочем и многих других: все что отрисовано один раз на поверхности диалога, может быть стерто при перерисовке перекрывающим диалогом, поэтому должно быть перерисовано диалогом в момент когда область становиться снова видимой (перекрывающий диалог был закрыт или свернут).



Менеджер интерфейса следит за тем, чтобы окну было отправлено соответствующее событие когда от него требуется перерисовать свою область (либо всю, либо ее определенную часть).



От диалога/окна/формы лишь требуется правильная реакция на данное событие: повторная отрисовка содержимого.



Сообщение на уровне Windows API, которое должно вас интересовать называется WM_PAINT, если вы используете MFC или какую другую библиотеку более высокого уровня, то скорее всего вам просто необходимо правильно реализовать обработчик события OnPaint.



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



С уважением,

Владимир
0
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 4
30.08.2007, 17:02  [ТС]
Спасибо за ответ!
Я в диалоге рисую графики...в реальном времени.
На сколько я понял самым оптимальным в этом случае будет рисовать по битмапу и в OnPaint загружать етот битмап. Вот с битмапом у меня получается не очень хорошо...Если не трудно могли бы вы расказать етот принцип?
С уважением Артем
0
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
30.08.2007, 20:23
Вот здесь хороший пример in-memory Device Context http://www.codeproject.com/gdi/flickerfree.asp, который как раз использует битмап, кстати, полезный класс для отрисовки изображения формы или элемента без мигания.



К сожелению класс спроектирован для использования лишь с библиотекой MFC, но сам принцип там вполне хорошо просматривается.



Удачи,

Владимир
0
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 4
03.09.2007, 17:45  [ТС]
Большое Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.09.2007, 17:45
Помогаю со студенческими работами здесь

Как затирать определённую облать в Win32 API?
Здравствуйте, как затирать определённую облать? Я знаю, что есть InvalidateRect(), но она перерисовывает всё.Существует ли функция или как...

Как переключаться между окном игры и окном браузера, или скайпа, или т. п.?
Как переключаться между окнами игры и браузера/скайпа/итд? Включен оконный режим игры, курсор не выходит за его пределы. Чтобы...

Есть ли в WPF полноценная замена GDI+? Чтобы можно было всё, что можно в GDI+? Просто думаю углубляться в работу с изображениями в WPF или GDI.
Ну собственно весь вопрос в заголовке темы.

Как заставить сайт написанный на 5.3 заставить работать на 5.6? Как принудительно включить register_globals?
Есть древний сайт. Работает на php 5.3. Как объяснил разработчик данного сайта - все дело в register_globals, надо принудительно включить...

как заставить писиспикер заставить хоть чтото проскрипеть?
помогите дураку как заставить писиспикер заставить хоть чтото проскрипеть??? в бэйсике с этим не каких проблем не было а вот в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru