Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GetPixel перебор всего изображения 
:(
    Опции темы
ZC1989
Дата 9.6.2012, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 468
Регистрация: 17.7.2006
Где: Нижний Новгород; Россия

Репутация: 1
Всего: 1



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

надо загрузить картинку, bmp , она является картой, на ней 3 разных цвета использованы...
в общем надо пройтись по всему изображения и либо создать свою матрицу по этой карте, либо использовать изображение в дальнейшем, разницы никакой, но у меня ерунда с цветами...


этим кодом вытягиваю картинку, и она получается....
Код

//Открываем файл для чтения
    HANDLE hFile = CreateFile(getUrlTexture("col.bmp"),
                     GENERIC_READ, 
                     0,
                     NULL,
                     OPEN_EXISTING,
                     FILE_ATTRIBUTE_NORMAL,
                     NULL);

    //Считываем заголовок файла
    DWORD dwBytesRead;
    BITMAPFILEHEADER hdr;// bitmap file-header 
    ReadFile(hFile, &hdr, sizeof(BITMAPFILEHEADER), &dwBytesRead, NULL);
    UINT ImageSize = hdr.bfSize - hdr.bfOffBits;//Получаем размер изображения

    //Считываем заголовок BITMAPINFO
    PBITMAPINFOHEADER pbih;
    pbih = (PBITMAPINFOHEADER)new char[hdr.bfSize - sizeof(BITMAPFILEHEADER) - ImageSize];
    ReadFile(hFile, pbih, hdr.bfSize - sizeof(BITMAPFILEHEADER) - ImageSize, &dwBytesRead, NULL);

    //Считываем сам рисунок
    BYTE *lpBits = (LPBYTE) GlobalAlloc(GMEM_FIXED, ImageSize);
    ReadFile(hFile, &lpBits, ImageSize, &dwBytesRead, NULL);

    //Пытаемся загрузить все это в битмап
    BITMAP myBMP;
    myBMP.bmBits = lpBits;
    myBMP.bmBitsPixel = pbih->biBitCount;
    myBMP.bmHeight = pbih->biHeight;
    myBMP.bmWidth = pbih->biWidth;
    myBMP.bmPlanes = pbih->biPlanes;
    myBMP.bmType = 0;
    myBMP.bmWidthBytes = (pbih->biWidth * pbih->biBitCount + 15) / 16 * 2;

    //Теперь загружаем сам битмап
    HBITMAP hbmp = CreateBitmapIndirect(&myBMP);


а вот самый простой

Код

    HDC hdc = GetDC(NULL);
    SelectObject(hdc,hbmp);

    COLORREF bigg = GetPixel(hdc,100,100);
    
    int b1 = GetBValue(bigg);


на дает верных результатов

Это сообщение отредактировал(а) ZC1989 - 9.6.2012, 17:05


--------------------
озарение настанет позже, когда поймём больше... (Сo. Stigmata)
PM MAIL ICQ   Вверх
bass
Дата 12.6.2012, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



ТОчно непомню но кажеться так надо не точно......
Код

HDC hdc = GetDC(NULL);
hdc = CreateCompatibleDC(hdc);
 SelectObject(hdc,hbmp);


M
GremlinProg
пользуйтесь кнопкой Код, пожалуйста,
за многократные игнорирования замечаний выставляю предупреждение


Это сообщение отредактировал(а) GremlinProg - 13.6.2012, 06:55
PM MAIL   Вверх
BorisVorontsov
Дата 22.6.2012, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 4
Всего: 10



Вызов GetDC лишний


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.