Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Leopard256 от Октябрь 09, 2013, 08:09



Название: QColor
Отправлено: Leopard256 от Октябрь 09, 2013, 08:09
пытаюсь получить цвет пикселя:

QImage img = m_Image.toImage();
QColor cur_color = QColor(img.pixel(x,y));

вроде все правильно, но получаю:
+ cur_color   [Rgb] [r = 0x8383, g = 0xdddd, b = 0xdede] (...)   QColor


в img картинка правильная, координаты x,y не выходят за пределы.

Что это может быть и как исправить?


Название: Re: QColor
Отправлено: Old от Октябрь 09, 2013, 08:14
Попробуйте использовать:
QColor QColor::fromRgb(QRgb rgb) [static]


Название: Re: QColor
Отправлено: Leopard256 от Октябрь 09, 2013, 08:17
тоже самое получаю  :(


Название: Re: QColor
Отправлено: Old от Октябрь 09, 2013, 08:18
А что это за картинка, в каком формате она храниться и как получается?


Название: Re: QColor
Отправлено: Leopard256 от Октябрь 09, 2013, 08:21
скриншот с экрана

если делать:

 m_Image.save("123.jpg");

сохраняется правильное изображение


Название: Re: QColor
Отправлено: Old от Октябрь 09, 2013, 08:23
сохраняется правильное изображение
А если img сохранить, что получиться?


Название: Re: QColor
Отправлено: Leopard256 от Октябрь 09, 2013, 08:28
не сохраняется, создает файл 1*1 пиксель

формат img  QImage::Format_RGB32


img ведь создается, значит m_pImage.toImage() проходит нормально?


Название: Re: QColor
Отправлено: Old от Октябрь 09, 2013, 08:54
img ведь создается, значит m_pImage.toImage() проходит нормально?
Не очень нормально, если

не сохраняется, создает файл 1*1 пиксель

Проверяйте полученный имедж на null с помощью:
bool QImage::isNull () const

Если QPixmap::toImage не может конвертировать картинку она возвращает пустой image.


Название: Re: QColor
Отправлено: Leopard256 от Октябрь 09, 2013, 09:15
1)почему значения QColor  отображаются в таком виде?
cur_color   [Rgb] [r = 0x8383, g = 0xdddd, b = 0xdede] (...)   QColor

хотя int отображается в десятичной форме, можно это исправить? (Microsoft Visual C++ 2010)
реальные значения цвета в QColor r = 0x83, g = 0xdd, b = 0xde

2) проблема с конвертацией как ни странно решилась самопроизвольно.


3) почему не компилируется:
  m_pix =   m_pImage.copy(0, 0, iWidth, iHeight);  

...
        HBITMAP pDestPicture = ::CreateCompatibleBitmap(hdcSrc, iWidth, iHeight);
        HGDIOBJ oldOBJ = ::SelectObject(pDest, pDestPicture);
        ::BitBlt(pDest, 0, 0, iWidth, iHeight, hdcSrc, 0, 0, SRCCOPY);
        QPixmap tmp = QPixmap::fromWinHBITMAP(pDestPicture);
        m_pImage = tmp;       

        QPixmap pTMP =  m_pImage.copy(0, 0, iWidth, iHeight); 
        m_pix =  pTMP;
...

 error LNK2019: unresolved external symbol "__declspec(dllimport) public: class QPixmap & __thiscall QPixmap::operator=(class QPixmap &&)" (__imp_??4QPixmap@@QAEAAV0@$$QAV0@@Z) referenced in function "public: void __thiscall SSS::getPic(void)" (?getPic@SSS@@QAEXXZ)