Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 5
1

GDI. Вывод bmp через промежуточный совместимый контекст

03.02.2016, 18:19. Показов 1829. Ответов 4

Author24 — интернет-сервис помощи студентам
Почему не выводит картинку код типа:

C++
1
2
3
4
5
6
7
HDC hdc = GetDC(hWnd);
HDC hMemDC1 = CreateCompatibleDC(hdc);
HDC hMemDC2 = CreateCompatibleDC(hdc);
HBITMAP hbmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
SelectObject(hMemDC1, hbmp);
BitBlt(hMemDC2, 0, 0, 16 , 16 , hMemDC1, 0, 0, SRCCOPY);
BitBlt(hdc, 0, 0, 16 , 16 , hMemDC2, 0, 0, SRCCOPY);
То есть через промежуточный совместимый контекст?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2016, 18:19
Ответы с готовыми решениями:

Создание bmp средствами gdi
Добрый день! Передо мной встала задача создать bmp файл, состоящий из изображений отрезком и...

GDI. Заполнить рабочую область частью bmp
Есть bmp, с помощью которого (а точнее его частью) надо инициализировать рабочую область окна. На...

Промежуточный вывод результата из конвеера команд
Задался таким вопросом: можно ли из конвеера команд вывести промежуточные результаты на экран, а...

Композиция через промежуточный интерфейс
Здравствуйте! Есть такой код: type IGeneral interface { Handle() } type Middle struct...

4
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
03.02.2016, 19:51 2
Цитата Сообщение от sergun4ez Посмотреть сообщение
Почему не выводит картинку код типа
Созданный промежуточный контекст hMemDC2 имеет размер 1 пиксель, следовательно он не может принять копию 16х16.
1
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 5
03.02.2016, 20:24  [ТС] 3
Цитата Сообщение от jonson Посмотреть сообщение
Созданный промежуточный контекст hMemDC2 имеет размер 1 пиксель, следовательно он не может принять копию 16х16.
Спасибо, что подсказали, а как же мне все-таки изменить его размер, а то я в GDI совсем не очень(?
0
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
03.02.2016, 20:36 4
Лучший ответ Сообщение было отмечено sergun4ez как решение

Решение

Цитата Сообщение от sergun4ez Посмотреть сообщение
а как же мне все-таки изменить его размер
После создания контекста вам нужно создать и включить в него битмап соответствующего размера.
C++
1
2
HBITMAP btm = CreateCompatibleBitmap(hdc, 16, 16);
SelectObject(hMemDC2, btm);
После этого можно копировать битовые блоки с hMemDC1 в hMemDC2
C++
1
BitBlt(hMemDC2,  0,  0, 16 , 16 , hMemDC1, 0, 0, SRCCOPY);
После всех операций с рисованием, все созданные ресурсы должны удаляться.
C++
1
2
3
4
DeleteObject(hbmp);
DeleteObject(btm);
DeleteObject(hMemDC1);
DeleteObject(hMemDC2);
2
0 / 0 / 0
Регистрация: 02.02.2016
Сообщений: 5
03.02.2016, 20:38  [ТС] 5
Спасибо огромное)
0
03.02.2016, 20:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2016, 20:38
Помогаю со студенческими работами здесь

Отсортировать массив через промежуточный и записать результат в конечный
Добрый вечер! Задан одномерный массив целых чисел А (возможно, повторяющихся). Рассортировать...

Как получить данные из унаследованного класса через промежуточный класс?
Есть три класса: Background.cpp: #pragma once class Background { public:

Вывод целого в контекст устройства
Вот как вывести целое? Вот, например, для вывода текста служит функция pDC->TextOutW(10,10,t); ...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru