ddraw 缩放的问题

qwqwqw408 2009-09-09 09:34:19
我在程序中创建了一个主表面,因为不能为独占模式,所以采用用覆盖页面over lay的方式来显示图片。因此创建了带一个缓冲的覆盖页面。基本想法是把yuyv格式的图片copy到其中一个覆盖页面,然后再blt到另一个覆盖页面,最后显示出来,实现缩放的效果。最后的结果是小图片800x600以内的,缩放显示完全没问题,但是更大的图片,比如1200x960在缩放到800x480时,出现颜色丢失,而且画面有些线条。我的开发环境是s3c6410的开发板,wince6.0,希望有经验的同志能解答一下,不胜感激,以下是代码片段:
hRet = pDD_back->Lock( NULL, &ddsd, DDLOCK_WAITNOTBUSY, NULL);
pSurf = (LPBYTE)ddsd.lpSurface;
y_size = srcWidth * srcHeight;
memcpy(pSurf, data, y_size << 1);//data为yuyv格式的图片数据
pDD_back->Unlock(NULL);

hRet = pDD->Blt(&rd,pDD_back,NULL,DDBLT_WAITNOTBUSY,NULL);//缩放
// Update the overlay parameters.
hRet = pDD->UpdateOverlay(&rs, m_pDDSPrimary, &rd, DDOVER_SHOW, NULL);
...全文
116 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqhrs232 2012-06-18
  • 打赏
  • 举报
回复
也正好在这方面有困扰,我的是显示按钮的不同状态。
qwqwqw408 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zerocnd 的回复:]
我也在研究缩放,不过没用ddraw,

就是用的StretchBlt,ce4.0以上的版本效果还可以吧,可以使用SetStretchBltMode

以下的版本就不行了,不支持这个函数
[/Quote]

我是在做一个数码相框的功能,因为图片基本是jpg格式的。我们的开发板有jpeg硬件解码功能,出来格式是yuyv,我不想再转成rgb去显示,所以想直接利用ddraw来显示。谁知道,一般的图像没什么问题,遇到大图像就颜色全丢失了。。真不知道什么问题,没道理只有小图就可以啊
zerocnd 2009-09-09
  • 打赏
  • 举报
回复
我也在研究缩放,不过没用ddraw,

就是用的StretchBlt,ce4.0以上的版本效果还可以吧,可以使用SetStretchBltMode

以下的版本就不行了,不支持这个函数

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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