在Direct2D中创建位图时需要指定一些参数,其中一项就是 D2D1_BITMAP_OPTIONS,也就是选项。根据不同的用途需要设置不同的值。根据MSDN的文档说明,现将具体说明列于下方。
一、D2D1_BITMAP_OPTIONS_NONE = 0
表示没有任何标志被设置。这意味着位图可以用于绘制,但是不能被设置为渲染目标,不能从CPU读取它的内容。
二、D2D1_BITMAP_OPTIONS_TARGET = 1
表示位图可以被设置为渲染目标(通过ID2D1DeviceContext::SetTarget
方法)。如果同时还指定了 D2D1_BITMAP_OPTIONS_CANNOT_DRAW 标志,那么这个位图就不能够用于绘制。尝试绘制带有这两个标志的位图会导致设备上下文(Device Context)被设置为错误状态(D2DERR_BITMAP_CANNOT_DRAW)。
三、D2D1_BITMAP_OPTIONS_CANNOT_DRAW = 2
表示位图不能作为DrawBitmap
、DrawImage
函数的输入参数。不能用于创建位图画刷。不能作为效果的输入。
四、D2D1_BITMAP_OPTIONS_CPU_READ = 4
表示可以通过ID2D1Bitmap1::Map
方法映射位图,进而可以从位图读取或者写入内容。使用此标志的同时也需要同时设置D2D1_BITMAP_OPTIONS_CANNOT_DRAW 标志,并且不能和其他标志混合使用。这种位图必须通过CopyFromBitmap
或者CopyFromRenderTarget
方法进行更新。
五、D2D1_BITMAP_OPTIONS_GDI_COMPATIBLE = 8
表示可以获取一个和这个位图相关联的一个DC。这个标志必须和D2D1_BITMAP_OPTIONS_TARGET一起使用。并且位图的DXGI_FORMAT参数必须是DXGI_FORMAT_B8G8R8A8_UNORM 或者DXGI_FORMAT_B8G8R8A8_UNORM_SRGB。