请问如何在对话框中显示大一点的图片

lihuang073 2008-03-10 09:27:06
我采用对话框模式设计,picture控键窗口的显示大小设定为200×200,即BitBlt(0,0,200,200,&memdc,0,0,SRCCOPY);然后读取大的图片时,如何缩小图片进行显示能?
另外,我想显示一副图片后,再重新选取一副图片进行显示,怎么样把原来的图片清除呢??就是说显示大图片后再显示小图片,小图片就覆盖了大图片的一小部分而已,如何解决??
请高手指点一下,谢谢!

我本想贴图的,可是不知道怎么上传给大家看~~~~
...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 smallfishff 的回复:]
//缩放
StretchBlt

//图片清除
CWnd::Invalidate();
CWnd::UpdateWindow();
[/Quote]

另外, 想部分清除 就用 InvalidateRect() 可以指定清楚区域。

1。 第一次显示的图片size记忆一下。
2。 a.显示新的图片的时候, 如果新的图片的 size > 先前现实的图片size的话, 不用清除背景(因为新的图片会覆盖旧的图片)。
b.新图片size<先前图片的size 就要清除背景了。
但是, 这里有一个问题:
如果图片很大的话, 先清除背景(变成默认背景色),然后再画新图, 这样有的时候会闪烁。
解决办法是, 只清除先前图片的残留部分。用new size , old size很容易得到,然后InvalidateRect()。
lihuang073 2008-03-10
  • 打赏
  • 举报
回复
谢谢大家 我试一下
smallfishff 2008-03-10
  • 打赏
  • 举报
回复
//缩放
StretchBlt

//图片清除
CWnd::Invalidate();
CWnd::UpdateWindow();
guanghong 2008-03-10
  • 打赏
  • 举报
回复
StretchBlt可以实现缩放,你先把大的图片BitBlt上去,
然后在把小的图片StretchBlt上去,就会覆盖掉一部分
最后再把memdc显示出来就行了
oakfire 2008-03-10
  • 打赏
  • 举报
回复
用StretchBlt函数可以缩换。

19,470

社区成员

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

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