Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ и WinAPI

Войти
Регистрация
Восстановить пароль
 
radzko
11 / 11 / 7
Регистрация: 16.04.2015
Сообщений: 28
#1

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

18.09.2015, 12:43. Просмотров 251. Ответов 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):

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

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

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

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

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

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

1
casper007
67 / 67 / 22
Регистрация: 12.12.2013
Сообщений: 402
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
Привет! Вот еще темы с ответами:

Реализация алгоритмов растровой развертки линий - Turbo Pascal
Уважаемые форумчане, помогите исправить программу. При запуске программы вылетает exitcode=1. program lines; uses crt, graph; var...

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

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

Графики (Нужно в VC++ построить графики...) - C++
Нужно в VC++ построить графики...Двумерные и трехмерные...Не подскажете как?


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

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

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