// int iMapMode = pDC->SetMapMode(MM_ANISOTROPIC);
// pDC->SetViewportExt(1, -1);
// pDC->SetViewportOrg(0, height); ret = ::DrawDibDraw(hDib, pDC->GetSafeHdc(), 0, 0, width, height, &biInfo, pBuffer,
0, 0, width, height, DDF_BUFFER );红块在上面,绿块在最下面才是正确的,
如图,,左边蓝红绿的图像.是,DrawDibDraw显示的图像,是倒着的,
pBuffer是JPG解码后的RGB数组.,
因为要输出视频,通过修改pBuffer数组来实现摆正图像.感觉会影响显示速度,
网上找了下,说设置坐标变换可以摆正图像.经过测试,如上代码注释部分,对DrawDibDraw并没有效果.除了坐标原点改变了,显示的图像依然是倒着的,但变换坐标后,通过画点的方式可以让图像颠倒,
问题,怎么才能通过DrawDibDraw显示不颠倒的图像?谢谢,.

解决方案 »

  1.   

    dib机构BitmapInfo里结构头里的高度参数设置为负数
      

  2.   

    int iMapMode = pDC->SetMapMode(MM_ANISOTROPIC);
    pDC->SetViewportExt(1, -1);
    pDC->SetViewportOrg(0, height); biInfo.biHeight = 0 - biInfo.biHeight;
    ret = ::DrawDibDraw(hDib, pDC->GetSafeHdc(), 0, 0, width, height, &biInfo, pBuffer,
    0, 0, width, height, DDF_BUFFER );
    以上代码.,
    DrawDibDraw返回0,绘制失败,高度不可能为负数的,高度不是坐标,
    发言前请先了解或自测下好不好..
      

  3.   

    http://blog.csdn.net/zhang11wu4/article/details/13018011
    " DrawDIBDraw显示图像颠倒的解决方法"
      

  4.   

    我就是按这个写的.,对DrawDIBDraw不管用.没效果.只有原点下移了,坐标依然上自上而下.