Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.64
TANAR
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 4
#1

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

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

Первый раз столкнулся с GDI и вот никак не могу допереть как заставить не затирать окном полученную графику...
Графика выводиться потоком по указателю в диалоговое окно. Насколько я понял, тама надо что-то с OnDraw'ом делать, а вот что, да как не пойму...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2007, 21:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как заставить не затирать окном полученную графику в GDI? (C++):

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

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

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

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

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

Как распарсить строку, полученную из webBrowser - C#
Доброго времени суток. Уважаемые программисты помогите в вопросе. есть у меня webbrowser и richtextbox и строка вот такого вида ...

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



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



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



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



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



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



С уважением,

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



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



Удачи,

Владимир
0
TANAR
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 4
03.09.2007, 17:45  [ТС] #6
Большое Спасибо!
0
03.09.2007, 17:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2007, 17:45
Привет! Вот еще темы с ответами:

Как проверить полученную дату в промежутке от 20 до 25 дней - C++
Я наконец то нашел функцию для работы со временем но встала проблема как проверить полученную дату в промежутке от 20 до 25?(Дата только...

Как передать матрицу, полученную в одной функции, в другую функцию? - C++
как передать матрицу ,которую мы получили в одной функции в другую функцию? Написала функции для обработки матриц,но компилятор...

Как работать с GDI - C# ASP.NET
Народ подскажите как на asp работать с gdi , я знаю просто windows form і как с ним роботать , а как в asp это делать ? Как делать там...

Как сделать диалог главным окном? - Visual C++
я новичок в VC... (но хорошо знаю CBuilder) как сделать диалог главным окном кроме этого способа: BOOL InitInstance(){ //... ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.