Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ и WinAPI
Войти
Регистрация
Восстановить пароль
 
radzko
11 / 11 / 9
Регистрация: 16.04.2015
Сообщений: 28
#1

Загрузка растровой графики - C++ WinAPI

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

Здравствуйте!

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

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2015, 12:43
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Загрузка растровой графики (C++ WinAPI):

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

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

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

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

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

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

1
casper007
69 / 69 / 58
Регистрация: 12.12.2013
Сообщений: 420
19.09.2015, 21:36 #2
Цитата Сообщение от radzko Посмотреть сообщение
case WM_CREATE:
это сообщение приходит до создания главного окна, а это значит, что hwnd может не иметь никакого значения. Поэтому в GetDC попробуйте параметром сделать NULL или HWND_DESKTOP
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2015, 21:36
Привет! Вот еще темы с решениями:

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

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

Непонятен принцип работы алгоритма Брезенхэма для растровой развёртки окружности
Вот пример с википедии,непонятны следующие моменты(а конкретно на чём основан...

Найти все функции f(x), графики графики которых проходт через точку В, если:
f'(x)=4{x}^{2}-9{x}^{-2}, B(3;-2)


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

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

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