Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с Bitmap  (Прочитано 6335 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Axenic
Гость
« : 14-02-2010 10:13 » 

1) при создание нового экземпляра класса bitmap используется не тот конструктор, тоесть: Я пише:
Код:
Bitmap bmp(membit,(HPALETTE *)NULL);//Где membit - HBITMAP
А при компиляции выдается ошибка:
Цитата
Gdiplus::Bitmap::Bitmap(const WCHAR *,BOOL): невозможно преобразовать параметр 1 из 'HBITMAP' в 'const WCHAR *'
Почему такой бред получается, ведь я вызываю совсем другой конструктор?
2) Открываю Bitmap из файла вот так:
Код:
Bitmap bmp1(L"D://Screen//Скрин2.bmp");
Потом сохраняю вот так:
Код:
bmp1.Save(L"D://Screen//some.bmp",&((CLSID)::ImageFormatBMP));
Затем пытаюсь вывести цвет пикселей вот так:
Код:
zvet = bmp1.GetPixel(x,y,&zvet);
std::cout << x << "|" << y << "|" << zvet.Red << "|" << zvet.Green << "|" << zvet.Blue << "\n";
И как это часто бывает, ничего не выходит.
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 14-02-2010 10:47 » 

у битмапа есть конструктор Bitmap::Bitmap(HBITMAP,HPALETTE)

Конструктора Bitmap::Bitmap(HBITMAP,HPALETTE*), по-моему, нет. Соответственно, пытается подогнать к более близкому похожему.
Записан
Axenic
Гость
« Ответ #2 : 14-02-2010 11:00 » 

Сделал. Работает. Но по прежнему не могу получить цвет пикселя.

Вот этот код выводит 0|0
Код:
cout << bmp1.GetHeight() << "|"<< bmp1.GetWidth() <<"\n";

Сейчас делаю так:
Код:
Bitmap* bmp1=new Bitmap(1680,1050);
bmp1=Bitmap::FromHBITMAP(membit,(HPALETTE)0);
Но как только обращаюсь к какому-нибудь методу bmp1, сразу выдается ошибка при выполнение: типа память по адресу Х не смогла обратиться к памяти по адресу Y. Память не может быть read.
Тоесть код:
Код:
cout << bmp1->GetHeight() << "|"<< bmp1->GetWidth() <<"\n";
Генерирует такое сообщение при выполнение.

проблема в том, что Bitmap::FromHBITMAP(membit,(HPALETTE)0); возвращает ноль
« Последнее редактирование: 14-02-2010 14:04 от RXL » Записан
Axenic
Гость
« Ответ #3 : 14-02-2010 14:44 » 

Я так понял, что нужно вместо (HPALETTE)0 задать палитру, только как?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines