鼠标单击时如何使一幅位图移位而窗口不重画?

Kaile 2000-01-22 11:13:00
我想编一个类似拖拉机的扑克游戏,希望单击一张牌(位图)使之向前跳出,即位图垂直移动,但不希望重画窗口,请大侠赐教!
...全文
278 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xubin_sh 2000-01-25
  • 打赏
  • 举报
回复
ScrollDC
solomon 2000-01-24
  • 打赏
  • 举报
回复
为每张牌建立一个窗口(只要一个从CWindow 继承下来的Class, 通过 Class中 CardType, CardNumber 成员判断如何画出该牌,可以用SetWindowRegion 来产生不规则窗口), 只要 MoveWindow 可以了。

你看,这样的方法是否巧妙?
zdg 2000-01-24
  • 打赏
  • 举报
回复
你在OnDraw中先画左边的矩形, 再画右边矩形. 移动的时候刷新这个有效区域不就行了...
WHQ 2000-01-24
  • 打赏
  • 举报
回复
简单制作动画的方法:
1. 恢复上次保存的区域
2. 保存将要被覆盖的区域
3. 把移动的牌移到新位置
kxy 2000-01-23
  • 打赏
  • 举报
回复
2 or more retangles use the InvalidateReg not InvalidateRect
blaise 2000-01-23
  • 打赏
  • 举报
回复
I agree with zdg.I think u try to avoid redraw is from 2 reason.first redraw is slow.second the slow speed lead to some flick.Logically,unless you use double buffer(such like ddraw),the redraw(or to say flick)is unavoidable.The only way is try to limit the sregion size which need to be redraw as small as possible.So only invalidate the card's orginal position and its destination position,2 rectangles,use the InvalidateRect.
zdg 2000-01-23
  • 打赏
  • 举报
回复
好像是InvalideRect函数, 移动的时候只需将有效区域刷新就可以了...
有效区域可以是包含两个矩形的更大的矩形.
Kaile 2000-01-23
  • 打赏
  • 举报
回复
谢谢网友的精辟见解,但又有另一个问题:在类似拖拉机的游戏里,选牌时牌(位图)向前弹出,总是希望右边的能盖住左边的牌,但如果后刷新左边的矩形,它将盖住先刷新的右边矩形,也即如何在任何时候都能使右边的位图盖住左边的位图?(不是完全覆盖)
kxy 2000-01-23
  • 打赏
  • 举报
回复
validateRect 你想更新的区域.

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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