Как сохранить ID2D1Bitmap в файл PNG не помог мне.
Я работаю с Direct2D.
Я хочу сохранить ID2D1**Hwnd**RenderTarget *m_pRenderTarget
подать как BMP или PNG и т. д.
Но образец, который я нашел на использовании MSDN ID2D1RenderTarget
,
В моем случае я нарисовал свою фигуру в m_pRenderTarget, я использовал метод ID2D1Bitmap::CopyFromRenderTarget (...)
чтобы получить ID2D1Bitmap.
После этого, чтобы использовать функцию сохранения ниже, я должен преобразовать ID2D1Bitmap
я должен был IWICBitmap
, Поскольку функция ниже не использует ID2D1Bitmap
…
Я еще не нашел, как это сделать.
Благодарю.
if (SUCCEEDED(hr))
{
//
// Save image to file
//
hr = pWICFactory->CreateStream(&pStream);
}
WICPixelFormatGUID format = GUID_WICPixelFormatDontCare;
if (SUCCEEDED(hr))
{
static const WCHAR filename[] = L"output.png";
hr = pStream->InitializeFromFilename(filename, GENERIC_WRITE);
}
if (SUCCEEDED(hr))
{
hr = pWICFactory->CreateEncoder(GUID_ContainerFormatPng, NULL, &pEncoder);
}
if (SUCCEEDED(hr))
{
hr = pEncoder->Initialize(pStream, WICBitmapEncoderNoCache);
}
if (SUCCEEDED(hr))
{
hr = pEncoder->CreateNewFrame(&pFrameEncode, NULL);
}
if (SUCCEEDED(hr))
{
hr = pFrameEncode->Initialize(NULL);
}
if (SUCCEEDED(hr))
{
hr = pFrameEncode->SetSize(sc_bitmapWidth, sc_bitmapHeight);
}
if (SUCCEEDED(hr))
{
hr = pFrameEncode->SetPixelFormat(&format);
}
if (SUCCEEDED(hr))
{
hr = pFrameEncode->WriteSource(pWICBitmap, NULL);
}
if (SUCCEEDED(hr))
{
hr = pFrameEncode->Commit();
}
if (SUCCEEDED(hr))
{
hr = pEncoder->Commit();
}
Чтобы объяснить легко, у меня уже был код Direct2D, и мое изображение рисунка удерживается на моем ID2D1HwndRenderTarget. Я хочу сохранить нарисованное изображение, удерживаемое моим ID2D1HwndRenderTarget, на диске.
образец, который я нашел, создает новый IWICBitmap, и с
pD2DFactory->CreateWicBitmapRenderTarget(pWICBitmap,D2D1::RenderTargetProperties(),&pRT);
create a new ID2D1RenderTarget to draw. After drawing operations, it wrote the bitmap image
hr = pFrameEncode->WriteSource(pWICBitmap, NULL);
В моем случае я не знаю, как поместить изображение из моей ID2D1HwndRenderTarget в IWICBitmap … чтобы написать его. кто-то знает, как связать ID2D1HwndRenderTarget и IWICBitmap
Задача ещё не решена.
Других решений пока нет …