我一直在编写自己的函数库来访问一些新的Direct2D Windows库。特别是,我一直在研究ID2D1Bitmap接口。我想编写一个函数来返回指向位图数据开头的指针(用于编辑特定像素,或自定义编码或我将来可能想要的任何其他内容)。不幸的是......未来的问题...
我似乎无法找到从ID2D1Bitmap接口访问原始像素数据的方法。
有没有人知道如何访问它?我的一位朋友建议将位图绘制到曲面并从那里提取位图数据。我不知道这是否有效。它看起来效率低下,我不知道使用哪种表面。
感谢任何帮助。 (特别是c ++,但我认为语言之间的代码不会太差异)
(我知道我可以直接从文件中读取数据,但我正在使用WIC解码器,这意味着它可以是任意数量的难以理解的格式)
答案 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来获取位图数据。