Как сохранить 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
ID2D1HwndRenderTarget
просто наследуется отID2D1RenderTarget
. Так почему же образец не помог? Не могли бы вы также опубликовать ссылку на образец? - person sraok   schedule 26.01.2013