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

Загрузка растровой графики

18.09.2015, 12:43. Показов 796. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

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

1. Добавил растровую графику как ресурс в свой проект и получил соответствующий ID "IDB_BITMAP1".
2. Объявил необходимые мне структуры.
C++
1
2
3
4
5
PAINTSTRUCT ps;
HDC hDc;
HBITMAP hBitmap;
static HDC memBit;
static BITMAP bm;
3. В обработчике WM_CREATE загружаю изображение, получаю информацию о загруженном изображении, создаю виртуальный контекст устройств, совместный с текущим, ставлю в соответствие виртуальному контексту полученный ранее битовый образ. Прилагаю код:
C++
1
2
3
4
5
6
7
8
case WM_CREATE:
    hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
    GetObject(hBitmap, sizeof(bm), &bm);
    hDc = GetDC(hwnd);
    memBit = CreateCompatibleDC(hDc);
    SelectObject(memBit, hBitmap);
    ReleaseDC(hwnd, hDc);
break;
4. Далее пытаюсь в обработчике WM_PAINT вывести изображение на окно. Для этого я его копирую из своего memBit в hDc функцией BitBlt.
C++
1
2
3
4
5
case WM_PAINT:
    hDc = BeginPaint(hwnd, &ps);
    BitBlt(hDc, 0, 0, bm.bmWidth, bm.bmHeight, memBit, 0, 0, SRCCOPY);
    EndPaint(hwnd, &ps);
    break;
Запускаю программу и никакого изображения не вижу. Более того, при отладке заметил, что в моей структуре bm после выполнения GetObject() ничего не поменялось: все поля нулевые. Не могу понять в чем ошибка. Помогите разобраться, пожалуйста.

Добавлено через 23 минуты
UPD: все вышеперечисленные действия верны. Нашел ошибку в другом месте. Проблемы больше нет
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2015, 12:43
Ответы с готовыми решениями:

Поточные выводы растровой графики
Всем моё почтенное приветствие :senor: Суть задания: необходимо создать 3 потока, каждый из...

Последовательная загрузка графики
Помогите разобраться с ошибкой ImageLoader.as package { import flash.display.*; import...

API Vkontakte загрузка графики на стену
похоже я злостно туплю ( проблема в сабже, на сайте вконтакта есть описание процесса 1. С...

Трассировка растровой линии
Необходимо разработать алгоритм "трассировки" растровой линии. Допустим, у нас есть изображение...

1
71 / 71 / 58
Регистрация: 12.12.2013
Сообщений: 420
19.09.2015, 21:36 2
Цитата Сообщение от radzko Посмотреть сообщение
case WM_CREATE:
это сообщение приходит до создания главного окна, а это значит, что hwnd может не иметь никакого значения. Поэтому в GetDC попробуйте параметром сделать NULL или HWND_DESKTOP
0
19.09.2015, 21:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2015, 21:36
Помогаю со студенческими работами здесь

Работа с растровой картой
Добрый день. Такие вот дела, нужно написать что-то типо кустарного АИСГПТ, с картой и базой данных....

Работа с растровой картой
Добрый вечер. Нужна ваша помощь. В наличии: карта города в виде .bmp файла, к нему файл привязки...

Реализация алгоритмов растровой развертки линий
Уважаемые форумчане, помогите исправить программу. При запуске программы вылетает exitcode=1. ...

Посоветуйте пакет для работы с растровой графикой
Привет всем. Я делаю свою графическую капчу, и для ее реализации требуется пакет для работы с...


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

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