![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Подскажите как создать CDC контекст в памяти для вывода графики.
А потом перенести это изображение на экран. Типа как в OpenGL. Рисую сцену в задний буфер, а потом SwapBuffers(). |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Взять CDC окна, CreateCompatibleDC а потом Bitblt
|
|||
|
||||
| Gorbatovsky |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Спасибо за подсказку.
Я нашел несколько примеров на форуме CodeGuru.com. Первый пример
Второй пример
Но у меня нижего не рисуется. Белый экран. |
||||
|
|||||
| Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Чтобы увидеть что-нибудь не белое, надо сначала нарисовать что-нибудь не белое... -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Дорогой ценитель классики. С юмором у Вас все OK. А я, иногда, не понимаю оного. Почему я должен терять время на Ваши шутки. Для этого есть специальные чаты. |
|||
|
||||
| Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
В каждой шутке есть доля шутки... А все остальное - рациональное зерно, просто надо уметь его видеть.
Я вот и говорю, что в контекст надо что-нибудь нарисовать, причем цветом, отличным от белого. А если написал что-то для Вас обидное, то нижайше прошу прощения -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Это маленькое умалчивание простого факта, о котором забывают явно упомянуть 50% "маститых писателей", а 6-ой MSDN пишет очень мелким шрифтом
Когда ты создаешь графический котекст (именно создаешь а не используешь чей-то, невважно в памяти или как-то иначе), то в нем необходимо выбрать битмап тех размеров, какое "окно" отображает твой контекст. По умолчанию контекст сожержит битмап 1*1 пиксел. А во втром примере попробуй сделать не MemDC.FillSolidRect(rect_mem,RGB(255,255,255)); а какой-нибудь другой цвет. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Истинно так !!!!!!!!! -------------------- ![]() |
|||
|
||||
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Спасибо за советы Ars, DENN и mr.DUDA.
Я увидел, наконец картинку на экране, предварительно подготовленную в памяти. Но, только комментируя строку //MemDC.SetMapMode(MM_LOMETRIC); Но она тоже мигает, правда по другому, если рисовать прямо на экран. Если заполнять растр цветом отличным от белого, то мигает и фон. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Не будет мигать, если определить обработчик WM_ERASEBKGND сообщения для окна, в котором рисуешь, и сделать его пустым, т.е. "return FALSE".
-------------------- ![]() |
|||
|
||||
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Отлично mr.DUDA.
В текстовом режиме все OK. Не мигает. Но, когда делаю SetMapMode(MM_LOMETRIC), то вместо картинки тоненькая полоска внизу окна. Мне кажется, что для этого режима нужно по другому делать BitBlt |
|||
|
||||
| Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Начало координат для режима MM_LOMETRIC находится в левом нижнем углу -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
| Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Вернее, не так, а вот как: x-координата возрастает при движении вправо, y-координата возрастает при движении вверх. Поэтому, когда начало координат лежит в левом верхнем углу контекста, все, что будет нарисовано с положительной координатой y, будет нарисовано где-то вверху и видно не будет. Для пересчета координат нужно использовать ф-цию LPtoDP -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
| Gorbatovsky |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 4.9.2003 Где: Киев Репутация: нет Всего: нет |
Спасибо за подсказку Ars.
Но, ведь для функции BitBlt() не нужны координаты. Попробую перенести изображение при помощи ::StretchDIBits(). Но, нужно еще заполнить структуру LPBITMAPINFO. |
|||
|
||||
| mr.DUDA |
|
||||||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Это как это не нужны ? А ?? ?
Логические координаты, заметь !
И зачем тогда вызывать ::StretchDIBits() ? -------------------- ![]() |
||||||||
|
|||||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |