none
Искажение цвета bitmap в print preview в проекте MFC RRS feed

  • Общие обсуждения

  • Всем привет!

    Есть код:

    void CWDCView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
    {
        HBITMAP hBMP = (HBITMAP) LoadImage( NULL, L"C:\\Users\\user\\Pictures\\1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
        BITMAP bmInfo; 
        CDC cdcMem;
        cdcMem.CreateCompatibleDC(pDC);
        HBITMAP hbmOld = (HBITMAP)cdcMem.SelectObject(hBMP); //сохранить что было
        GetObject(hBMP, sizeof(bmInfo), &bmInfo);
        pDC->BitBlt(0,0,bmInfo.bmWidth,bmInfo.bmHeight,&cdcMem,0,0,SRCCOPY);
        cdcMem.SelectObject(hbmOld); // вернул что было
        DeleteDC(cdcMem);
    }

    При просмотре preview получаются неправильные цвета, причем этот же код если вставить в OnDraw() выводит в окне представления (CView) все корректно, но в print preview все равно кривые цвета. Такое ощущение что проблема при работе с контекстом PreviewDC, но в чем именно проблема не понятно. Чисто теоретически не должно быть никакой разницы в какой контекст выводить bitmap, однако проблема налицо, так сказать.

    Как с этим бороться?

    прикрепил картинки: слева оригинал, справа то что видно в окне print preview (кликабельные ссылки пока не могу размещать тут)

    Ссылка на пример изображения:

    forum.sources.ru/index.php?act=Attach&type=post&id=0&attach_id=43635




    18 февраля 2015 г. 19:12