Имеется некое SDK, которое возвращает буфер с картинкой:
void* BufPointer;
DWORD BufWidth, BufHeight, BufPitch;
BITMAPINFO BmpInfo;
m_NewPicDecompBuffer->GetBufPointer(BufPointer, BufWidth, BufHeight, BufPitch);
m_NewPicDecompBuffer->GetBitmapInfoHdr(BmpInfo.bmiHeader);
Если рисовать картинку через виндовое GDI+, то цвета нормальные отображаются:
Bitmap MemBmp(BufWidth, BufHeight, BufPitch, PixelFormat24bppRGB, (BYTE*)BufPointer);
MemBmp.RotateFlip(RotateNoneFlipY);
Graphics graphics(pDC->m_hDC);
graphics.DrawImage((Image*)&MemBmp, m_ViewerRect.left, m_ViewerRect.top);
Средствами QImage пытаюсь проделать тоже самое:
QImage img( (BYTE*)BufPointer, BufWidth, BufHeight, BufPitch, QImage::Format_RGB888 );
img = img.mirrored( false, true );
QPainter painter( this );
painter.drawImage( 0, 0, img.scaled( this->size() ) );
Однако цвета не совпадают с GDI+, а именно розовый превращается в фиолетовый, голубой - в желтый.
Где ошибся?