Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простой вывод графики 
:(
    Опции темы
Зверушка
Дата 1.3.2012, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пытаюсь вывести графический приметив на экран. Пусть это будет прямоугольник. Но если я вывожу его в функции WinMain, то нифига не выводится. Даже если я ничего не трогаю, не меняю размер окна и прочее. Выводится только в бесконечном цикле.
Как сделать так, чтобы у меня всегда в одном месте относительно окна была моя "графика"? Я что-то не учитваю? Как-то поработать с WM_PAINT? или что? :(...
Сори, но не удалось вручную разобраться с помощью поиска...
PM MAIL ICQ Skype   Вверх
Cheloveck
Дата 1.3.2012, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Рисовать нужно при обработке WM_PAINT на контексте, который вернётся из BeginPaint. По окончании рисования нужно вызвать EndPaint.
Тут полно примеров. Здесь более детальное овервью.

Это сообщение отредактировал(а) Cheloveck - 1.3.2012, 22:22


--------------------
user posted image
PM Jabber   Вверх
Зверушка
Дата 1.3.2012, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Большое спасибо.
Неизменные элементы графики нужно перерисовывать в ВМ_пейнт всегда и полностью?
PM MAIL ICQ Skype   Вверх
Cheloveck
Дата 2.3.2012, 05:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Нет, не всегда. Если WM_PAINT  был брошен из  InvalidateRect, то надо перерисовывать только испорченный прямоугольник. Но это уже детали. Если перерисовывать полностью всегда, то может только лишь чуть больше подтормаживать. Кроме того, чаще всего WM_PAINT кидается из UpdateWindow, то есть для полной  перерисовки содержимого.


--------------------
user posted image
PM Jabber   Вверх
Зверушка
Дата 2.3.2012, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Жаль, что нет 100 постов, поставила бы тебе плюсик в репутацию. Спасибо еще раз.
PM MAIL ICQ Skype   Вверх
Зверушка
Дата 3.3.2012, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Скажите еще плз, если я объявляю часть окна недействительным для перерисовки, с помощью функции invalidaterect(), то как потом в WM_PAINT  я узнаю, какая область недействительная? И в каких пределах будет идти перерисовка в этом случае? Не могу понять никак... А если я делаю недействительным часть окна. а перерисовываю все окно, так может быть? Где указатель, какая область окна недействительна в WM_PAINT?
PM MAIL ICQ Skype   Вверх
volatile
Дата 3.3.2012, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(Зверушка @  3.3.2012,  01:07 Найти цитируемый пост)
Скажите еще плз, если я объявляю часть окна недействительным для перерисовки, с помощью функции invalidaterect(), то как потом в WM_PAINT  я узнаю, какая область недействительная?

Код

PAINTSTRUCT ps;
BeginPaint(hWnd, &ps);
BeginPaint = принимает указатель на структуру PAINTSTRUCT, которую она заполняет небоходимой информацией. В этой структуре есть, помимо прочего и координаты которые нужно перерисовать.
Цитата(Зверушка @  3.3.2012,  01:07 Найти цитируемый пост)
А если я делаю недействительным часть окна. а перерисовываю все окно, так может быть?

Может. Ничего страшного, кроме потери произодительности, не будет.

Цитата(Зверушка @  3.3.2012,  01:07 Найти цитируемый пост)
Где указатель, какая область окна недействительна в WM_PAINT?

PAINTSTRUCT

Добавлено через 1 минуту и 19 секунд
Вотздесь довольно доходчиво и на русском.
PM MAIL   Вверх
Зверушка
Дата 4.3.2012, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



К сожелению будет перерисовываться всегда только указанная область, даже если написан код перерисовки для всего окна. ) Долго не могла понять, почему не работает.  smile 
PM MAIL ICQ Skype   Вверх
bems
Дата 4.3.2012, 02:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Зверушка, это потому что есть clipping region, совпадающий с invalid rect. Его можно изменить


--------------------
Обижено школьников: 8
PM MAIL   Вверх
volatile
Дата 5.3.2012, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(Зверушка @  4.3.2012,  02:40 Найти цитируемый пост)
К сожелению будет перерисовываться всегда только указанная область, даже если написан код перерисовки для всего окна.

Зверушка, обычно в реальных программах складывается абсолютно противоположная ситуация.
В вашем-же случае проблема решается очень просто:
Код

InvalidateRect(hwnd, 0, 0);

И перересуется вся клиетская область.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

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


 




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


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

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