了解 GetDiBits。 C++
Understanding GetDiBits. C++
MSDN 说在GetDiBits
中使用的位图在调用此函数之前不应被选入DC。但是根据我的经验(使用 BitBlt
),我知道除非选择它,否则我无法绘制位图。
GetDiBits
如何规避这个问题?我可以只使用未选择的、新创建的位图作为此函数的参数吗?
GetDiBits
以及 CreateDibSection
returns 一个数组。但是 MSDN 说第一个函数:
"bits of the specified compatible bitmap"
我以为 DI 代表 DeviceIndependent。为什么会有矛盾?这意味着,根据 MSDN,GetDiBits
只能与 CreateCompatibleBitmap
(即 DD)一起使用?那我总不能把这个数组发到别的机器上显示吧?
- 两个函数都使用hDC。如果
CreateDibSection
确实是 DIndependent 为什么它需要一个 hDC?所有需要的信息都通过位图信息头提供...
- I cannot draw an a bitmap unless it is selected. How does GetDiBits circumvents this?
GetDIBits 不进行任何绘图。它从位图中读取像素数据并将其转换为所需的颜色格式。 SetDIBits 也不会 "draw",但它会在位图中设置像素数据。
- Naming confusion.
GetDIBitmap 中的 DI 是指像素数据以 device-independent 格式 返回 (具体是您要求的格式)。源位图可以是兼容位图或 device-independent 位图。
同样,SetDIBitmap 获取 device-independent 像素数据并将其转换为目标位图的类型。
这些函数的命名容易混淆。
- What's the DC for?
DC 用于回答有关设备像素格式的任何问题。例如,如果源格式是 palette-based device-dependent 位图,GetDIBits 将假定选择到 DC 中的调色板是正确的。请注意,调色板不在 BITMAPINFOHEADER 中。
CreateDIBSection 创建一个混合位图,以 device-independent 方法存储数据,但也可以保持 device-dependent 副本与其同步以提高性能。所以它需要知道目标设备的 DC。
MSDN 说在GetDiBits
中使用的位图在调用此函数之前不应被选入DC。但是根据我的经验(使用 BitBlt
),我知道除非选择它,否则我无法绘制位图。
GetDiBits
如何规避这个问题?我可以只使用未选择的、新创建的位图作为此函数的参数吗?GetDiBits
以及CreateDibSection
returns 一个数组。但是 MSDN 说第一个函数:"bits of the specified compatible bitmap"
我以为 DI 代表 DeviceIndependent。为什么会有矛盾?这意味着,根据 MSDN,
GetDiBits
只能与CreateCompatibleBitmap
(即 DD)一起使用?那我总不能把这个数组发到别的机器上显示吧?- 两个函数都使用hDC。如果
CreateDibSection
确实是 DIndependent 为什么它需要一个 hDC?所有需要的信息都通过位图信息头提供...
- I cannot draw an a bitmap unless it is selected. How does GetDiBits circumvents this?
GetDIBits 不进行任何绘图。它从位图中读取像素数据并将其转换为所需的颜色格式。 SetDIBits 也不会 "draw",但它会在位图中设置像素数据。
- Naming confusion.
GetDIBitmap 中的 DI 是指像素数据以 device-independent 格式 返回 (具体是您要求的格式)。源位图可以是兼容位图或 device-independent 位图。
同样,SetDIBitmap 获取 device-independent 像素数据并将其转换为目标位图的类型。
这些函数的命名容易混淆。
- What's the DC for?
DC 用于回答有关设备像素格式的任何问题。例如,如果源格式是 palette-based device-dependent 位图,GetDIBits 将假定选择到 DC 中的调色板是正确的。请注意,调色板不在 BITMAPINFOHEADER 中。
CreateDIBSection 创建一个混合位图,以 device-independent 方法存储数据,但也可以保持 device-dependent 副本与其同步以提高性能。所以它需要知道目标设备的 DC。