Windows编程:ID2D1Bitmap接口 - 获取位图数据

时间:2010-05-02 22:00:31

标签: c++ windows direct2d wic

我一直在编写自己的函数库来访问一些新的Direct2D Windows库。特别是,我一直在研究ID2D1Bitmap接口。我想编写一个函数来返回指向位图数据开头的指针(用于编辑特定像素,或自定义编码或我将来可能想要的任何其他内容)。不幸的是......未来的问题...

我似乎无法找到从ID2D1Bitmap接口访问原始像素数据的方法。

有没有人知道如何访问它?我的一位朋友建议将位图绘制到曲面并从那里提取位图数据。我不知道这是否有效。它看起来效率低下,我不知道使用哪种表面。

感谢任何帮助。 (特别是c ++,但我认为语言之间的代码不会太差异)

(我知道我可以直接从文件中读取数据,但我正在使用WIC解码器,这意味着它可以是任意数量的难以理解的格式)

2 个答案:

答案 0 :(得分:1)

通常,您无法访问ID2D1Bitmap数据。可以想象为仅GPU数据。但是,由于某些限制,您可以使用其他界面访问数据,具体取决于您的位图的创建方式。

由于您的位图由IWICBitmap支持,因此您使用Lock。 [(Bigger example: How to Modify the Pixels of a Bitmap Source)]

如果位图由ID3D11Texture2D支持,则您使用Map

如果是IDXGISurface,您可以使用GetDC

答案 1 :(得分:0)

由于您使用的是WIC解码器,因此您应该可以直接使用IWICBitmap::Lock来获取位图数据。