为什么用DrawDibDraw()函数显示的图像是上下颠倒的

potatoli 2007-04-19 09:53:12
我在做的程序是从摄像机采集数据,在PC上显示。
目前做法是把采集到的raw data转换为rgb data(每个像素4个字节),再用BitBlt函数和StretchBlt函数显示出来。
因为StretchBlt函数效率不高,现在想改用DrawDibDraw()函数,但是用DrawDibDraw()函数显示的图像却是上下颠倒的,把高度设为负值也不行,现在只能采取转换的时候倒着转换的方法解决。
请问上下颠倒的原因是什么,怎么解决这个问题。
...全文
797 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yibanbazi 2008-04-16
  • 打赏
  • 举报
回复
需要将扫描的坐标转换一下,DrawDibDraw函数在显示的时候是从下到上扫描图像的!
DentistryDoctor 2007-04-23
  • 打赏
  • 举报
回复
BITMAPINFO不正确, 将调度置为原来的负值。
potatoli 2007-04-23
  • 打赏
  • 举报
回复
都试过了,DrawDibDraw函数的dyDst和dySrc置为负数没有效果,还是颠倒的。结构BITMAPINFOHEADER的biHeight置为负数后不能显示图像。
potatoli 2007-04-22
  • 打赏
  • 举报
回复
请问DDB图像是不是一定要转换成DIB才能显示阿。
Rock_And_Roll 2007-04-20
  • 打赏
  • 举报
回复
那时显示的问题,实际内存中数据还是正的。想看实际显示效果可以用图像高度减计算得出的坐标的。
zcjcom830 2007-04-20
  • 打赏
  • 举报
回复
根据缩放比例 抽取部分数据显示
zcjcom830 2007-04-20
  • 打赏
  • 举报
回复
api内部实现的问题,只能调换
potatoli 2007-04-20
  • 打赏
  • 举报
回复
原因似乎是因为从相机采集到的数据是DDB的,而DrawDibDraw函数是用来显示DIB的,把DDB数据转换成DIB之后图像就正过来了。但是因为多了转换的步骤,程序执行的效率也没有明显的提高。
请问有什么高效率的直接显示DDB图像数据的方法。
potatoli 2007-04-19
  • 打赏
  • 举报
回复
一共有3个高度值: 结构BITMAPINFOHEADER的biHeight,DrawDibDraw函数的dyDst和dySrc
请问是不是这3个高度值都要用负值。
菜牛 2007-04-19
  • 打赏
  • 举报
回复
代码。DrawDibDraw函数高度是要用负值的。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧