题
如果我创建了一个DIB使用 CreateDIBSection()
, 我可以指定是否应该自上而下或自下而上通过设置 biHeight
现场的 BITMAPINFOHEADER
结构,消极或积极的价值。然而,如果我呼叫 GetObject()
在诸位,以填补一个 DIBSECTION
结构,然后这两个 dsBm.bmHeight
和 dsBmih.biHeight
似乎总是积极的。
有没有办法找出如果一个DIB自上而下或自下而上的时候我已经是的 HBITMAP
?
解决方案
我想最好你是要能够获得从HBITMAP要GetDIBits.该问题与GetDIBits但是,它也需要一个裂和HBITMAP是一个恒.
参见: GetDIBits功能
我不是积极的,但其可能你会失去任何顶downness在转换。
其他提示
没有;你需要的BITMAPINFOHEADER,这是不可恢复从HBITMAP.
没有方法检索这一信息从GDI。如你所发现的实实在在的位图和BITMAPINFOHEADER bmHeight领域检索到通过许总是积极的。该bmWidthBytes场是,同样,积极的。如果你画上(或)的DIBSection使用GDI处理GDI会提请DIBSection的正确方法。使用萃取BITMAPINFOHEADER是会得到顶下位图错误的。
唯一的方式来告诉从用户模式似乎是使用GDI试SetPixel左顶部和底左素位于两个不同的数值,然后读取的缓冲区看到其中写降落在第一个存储位置。
真的是最好的选择是建立进入你的API-whever你传递一个DIBSection作为一个HBITMAP,确保至少有一个bool fIsDibSectionTopDown传递或储存。