我目前正在学习 Direct2D,并且我成功地将图像加载到我的测试应用程序中,如下所述:
如何从文件加载位图 (https://learn.microsoft.com/en-us/windows/win32/direct2d/how-to-load-a-direct2d-bitmap-from-a-file) 和 如何从资源加载位图 (https://learn.microsoft.com/en-us/windows/win32/direct2d/how-to-load-a-bitmap-from-a-resource)
但现在我偶然发现了 Direct2D 的新增功能 -> 改进的图像加载 API 中的小节(https://learn.microsoft.com/en-us/windows/win32/direct2d/what-s-new-in-direct2d -for-windows-8-consumer-preview#whats-new-for-windows-10)。
有人可以向我解释为什么这些用于加载图像的新 API 比“如何从文件/资源加载位图”中使用的 API 更好吗?据我了解,这些新函数提供了 D2D1Image 类型,必须将其转换为 D2D1Bitmap 才能被 RenderTarget 使用?
根据文档:支持的像素格式和 Alpha 模式
当您使用 CreateBitmapFromWicBitmap 方法时,您使用 D2D1_BITMAP_PROPERTIES 结构的 PixelFormat 字段(而不是 D2D1_RENDER_TARGET_PROPERTIES 结构的 PixelFormat 成员) 指定新渲染目标的像素格式。必须匹配 WIC 位图源的像素格式。
ID2D1ImageSource 是像素的抽象提供者。有可能 从 WIC(CreateImageSourceFromWic 或 IDXGISurface(CreateImageSourceFromDxgi)。
CreateBitmapFromWicBitmap 必须与
WIC bitmap source
的像素格式匹配。
ID2D1ImageSource 可以从 WIC
或 IDXGISurface
实例化。从 IDXGISurface 实例化的 ID2D1ImageSource 也支持一些 YUV 像素格式。
创建渲染目标时,必须指定其像素格式。有关每个渲染目标支持的像素格式和 Alpha 模式的列表,请参阅支持的像素格式和 Alpha 模式。
当您使用 ID2D1RenderTarget::CreateSharedBitmap 方法时,您使用 要指定的 D2D1_BITMAP_PROPERTIES 结构的 PixelFormat 字段 新渲染目标的像素格式。它必须与像素匹配 ID2D1Bitmap 源的格式。