Pixelate Black Изображение отображается с использованием D2D RenderBitmap - PullRequest
0 голосов
/ 09 марта 2020

При рисовании растрового изображения после преобразования HBITMAP с использованием D2D отображается черное пиксельное изображение.

Исходное изображение - это изображение с высоким разрешением, которое я хочу напечатать, используя Windows D2d

HBITMAP bitmap; // HBITMAP Image
IWICBitmap* pwicbitmap;
IWICFormatConverter* pConverter;
ID2D1Factory* d2dfactory;
ID2D1Bitmap* ppD2DBitmap;
auto errmsg = m_WikImagingFactory->CreateBitmapFromHBITMAP(
  bitmap, NULL, WICBitmapUseAlpha, &pwicbitmap);
FAIL_FAST_IF_FAILED(errmsg);
errmsg = m_WikImagingFactory->CreateFormatConverter(&pConverter);
FAIL_FAST_IF_FAILED(errmsg);
D2D1_BITMAP_PROPERTIES d2dbp;
D2D1_PIXEL_FORMAT d2dpf;
FLOAT dpiX;
FLOAT dpiY;

d2dpf.format = DXGI_FORMAT_B8G8R8A8_UNORM;
d2dpf.alphaMode = D2D1_ALPHA_MODE_PREMULTIPLIED;
m_spD2DDeviceContext->GetFactory(&d2dfactory);
d2dfactory->GetDesktopDpi(&dpiX, &dpiY);
d2dbp.pixelFormat = d2dpf;
d2dbp.dpiX = 600;
d2dbp.dpiY = 600;
pConverter->Initialize(pwicbitmap, GUID_WICPixelFormat32bppPBGRA,
                     WICBitmapDitherTypeNone, NULL, 0.0f,
                     WICBitmapPaletteTypeMedianCut);
// errmsg = WICConvertBitmapSource(GUID_WICPixelFormat32bppPBGRA, pwicbitmap,
//                                 &pconvertedwicbitmap);
// FAIL_FAST_IF_FAILED(errmsg);
errmsg = m_spD2DDeviceContext->CreateBitmapFromWicBitmap(
  pConverter, 0, &ppD2DBitmap);
FAIL_FAST_IF_FAILED(errmsg);
m_spD2DDeviceContext->DrawBitmap(
  ppD2DBitmap, D2D1::RectF(dest_left, dest_top, dest_left + dest_width, dest_top + dest_height));
...