У меня есть устаревшее приложение MCF, которое отображает некоторые изображения (32-битные бит с информацией о альфа-канале) путем предварительного умножения изображений и использования метода CDC::AlphaBlend
.Рисовать 32-бит с альфа-каналом из ресурсов с помощью Direct2D
Я хотел бы представить некоторые новые графики с помощью Direct2D, но я не хочу переносить все изображения в png или другие форматы.
Мне удалось нарисовать BMP-изображение из файла, но у меня возникли проблемы с получением изображения из ресурсов, а также отображаемое изображение не использует информацию о альфа-канале.
Так может кто-нибудь помочь мне с этим?
Это мой код для создания растрового изображения:
hr = pIWICFactory->CreateDecoderFromFilename( L"D:\\image.bmp",
NULL,
GENERIC_READ,
WICDecodeMetadataCacheOnDemand,
&pDecoder);
if (SUCCEEDED(hr))
{
// Create the initial frame.
hr = pDecoder->GetFrame(0, &pSource);
}
if (SUCCEEDED(hr))
{
//create a Direct2D bitmap from the WIC bitmap.
hr = pRenderTarget->CreateBitmapFromWicBitmap(
pSource,
NULL,
ppBitmap
);
}
Это код для рисования растрового изображения:
m_pRenderTarget->DrawBitmap(
m_pBitmap,
D2D1::RectF(0.0f, 0.0f, size.width, size.height)
);
Благодарим вас за повтор. Я попробую как можно скорее (более приоритетные вещи, чем сейчас). В любом случае проблема с альфа-каналом теперь не «уважается», когда я открываю растровое изображение из файла ... поэтому я сомневаюсь, что это произойдет при открытии с использованием потока. –