我正在编写一个视频DMO解码器并尝试将位图返回到WMP渲染器进行显示......但WMP将其颠倒显示!
这是代码:
HBITMAP* hBmp = new HBITMAP();
int result;
m_pScrRenderer->CreateFrame(hBmp, &result); ///This returns the HBITMAP handle.
BITMAP bmStruct;
memset(&bmStruct, 0, sizeof(BITMAP));
GetObject(*hBmp, sizeof(BITMAP), &bmStruct);
int size = bmStruct.bmWidthBytes * bmStruct.bmHeight;
memcpy(pbOutData, bmStruct.bmBits, size); //PBoutData is WMP's renderer buffer.
这会产生颠倒的图像。我应该在这段代码中更改什么?
谢谢!
Roey。
答案 0 :(得分:1)
HBITMAP扫描线是颠倒读取的,您需要一次扫描一条扫描线并反转它。
我不知道有一种简单的方法可以做到这一点。
答案 1 :(得分:1)
如果你可以改变位图结构的参数,你可以给它一个负高度,使这些线以自上而下的顺序出现。