Неправильные цвета при предварительном просмотре

У меня есть этот код в моем методе OnPrint (я не могу использовать мой OnDraw, потому что я использую в нем Direcr2D)

void CWDCView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
    UINT width = 0, height = 0;
    pDoc->m_pWICBitmap->GetSize(&width, &height);
    UINT cbStride = (width*32+7)/8;
    UINT cbBufferSize = width * height * 4;
    BYTE *buffer = new BYTE[cbBufferSize];
    SecureZeroMemory(buffer, cbBufferSize);
    HRESULT hr = S_OK;

    hr = pDoc->m_pWICBitmap->CopyPixels(NULL, cbStride, cbBufferSize, buffer);
    HBITMAP bitmap = CreateBitmap(width, height, 1, 32, buffer);
    delete [] buffer;

    CBitmap *pBitmap=CBitmap::FromHandle(bitmap);
    BITMAP bmInfo; 
    pBitmap->GetBitmap(&bmInfo);
    CDC MemDC;
    MemDC.CreateCompatibleDC(pDC);
    MemDC.SelectObject(pBitmap);
    pDC->BitBlt(0,0,bmInfo.bmWidth,bmInfo.bmHeight,&MemDC,0,0,SRCCOPY);
}

У меня две проблемы:

  1. Неправильные цвета при предварительном просмотре (см. Прикрепленное изображение, правильное изображение - то, что я вижу в предварительном просмотре). Тем не менее, когда я печатаю его в XPS Document Writer, цвета правильные.

  2. Когда я печатаю растровое изображение на реальном принтере, я просто получаю пустую страницу.

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

PS Нет другого кода в OnFilePrintPreview, OnPreparePrinting, OnBeginPrinting, OnEndPrinting

0 ответов

Другие вопросы по тегам