|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.11.2014, 17:38 | #1 |
Пользователь
Регистрация: 10.11.2009
Сообщений: 50
|
MFC drawing
Форумчане подскажите как в учебном проекте можно устранить проблему исчезания нарисованного в окне.
Код:
1. Как мне кажется надо использовать BitBlt или StrachtBlt, для сохранения контекста в память, а потом достать обратно?Буду признателен за рабочий пример кода. 2. Более глобальный вопрос, как можно отобразить анимацию размера например того же Rectangle в момент рисования? Спасибо. |
16.11.2014, 22:55 | #2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Чтобы не исчезало, нужно рисовать в void CpenView::OnDraw(CDC* /*pDC*/)
а не в каких-то своих методах. 1. Посмотрите на примеры GDI Двойная буферизация или MFC двойная буферизация. Там копируется в память дабы мерцание убрать, оно же пригодится и в пункте 2. 2. Нужно хранить изображение в памяти, в OnDraw его тупо копировать и выводить в pDC. Окно просто показывает данные, но не хранит их. Рисуемый прямоугольник пока не является частью изображения, соответственно нужно заводить отдельно что-то вроде текущей фигуры. Анимация вся сводится к тому, что на перемещение мыши, меняются координаты прямоугольника, потом тупо выводится нарисованная ранее картинка, а сверху рисуется этот самый прямоугольник с новыми координатами. Можно со всякими xor режимами заморочиться (гуглинг по чему-то вроде "GDI XOR_PUT"), но бывают баги и есть ограничения, а тут и проще всё и надежнее. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Canvas does not allow drawing | HellMercenariess | Мультимедиа в Delphi | 1 | 26.07.2014 10:03 |
Drawing - Brush | Madmaxisss | C# (си шарп) | 0 | 20.12.2012 15:48 |
Canvas does not allow drawing | andrey.vadimovich | Общие вопросы Delphi | 1 | 17.06.2012 20:24 |
Canvas does not allow drawing | kettanaito | Компоненты Delphi | 5 | 12.01.2012 23:54 |
System.Drawing.dcuil | KyzDmitry | Компоненты Delphi | 3 | 14.08.2009 17:08 |