как сохранить растровое изображение в файл, используя direct2d и ID2D1HwndRenderTarget

Как сохранить 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

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]