游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3254|回复: 9

GDI下为何位图移动过的地方会留下痕迹?

[复制链接]

3

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2006-5-28 19:02:00 | 显示全部楼层 |阅读模式
我的代码大概是这样的

mdc = CreateCompatibleDC( hdc );

   SelectObject( mdc ,bmp );

BitBlt( hdc,x,y,350,375,mdc,0,0,SRCCOPY );
x+=10;  //  水平移动

移动过程并不会闪烁  
只是移动过的地方会留下位图移动过的一部分
一直存在


17

主题

165

帖子

167

积分

注册会员

Rank: 2

积分
167
发表于 2006-5-28 20:33:00 | 显示全部楼层

Re:GDI下为何位图移动过的地方会留下痕迹?

你每次绘制都没有擦除背景,所以会留下移动部分.
当然,因为你没擦,所以移动不会闪烁.

3

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2006-5-28 21:00:00 | 显示全部楼层

Re:GDI下为何位图移动过的地方会留下痕迹?

那请问怎么擦除
而且可以不闪烁?

8

主题

310

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
QQ
发表于 2006-5-28 22:09:00 | 显示全部楼层

Re:GDI下为何位图移动过的地方会留下痕迹?

每次贴背景不就行拉(在贴人物之前)

3

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2006-5-28 22:13:00 | 显示全部楼层

Re:GDI下为何位图移动过的地方会留下痕迹?

我的程序只是一个空白窗口
然后一张位图在上面移动

没有背景该怎么改?

7

主题

61

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2006-5-28 23:12:00 | 显示全部楼层

Re:GDI下为何位图移动过的地方会留下痕迹?

每次画之前填充窗口为黑色或者其他颜色

3

主题

508

帖子

508

积分

高级会员

Rank: 4

积分
508
发表于 2006-5-28 23:27:00 | 显示全部楼层

Re:GDI下为何位图移动过的地方会留下痕迹?

mdc = CreateCompatibleDC( hdc );

   SelectObject( mdc ,bmp );

BitBlt( hdc,0,0,800,600,mdc,0,0,SRCCOPY );    先画背景

BitBlt( hdc,x,y,350,375,mdc,0,0,SRCCOPY );
x+=10;  //  水平移动

2

主题

53

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2006-5-29 09:56:00 | 显示全部楼层

Re:GDI下为何位图移动过的地方会留下痕迹?

双缓冲吧

3

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2006-5-29 11:03:00 | 显示全部楼层

Re:GDI下为何位图移动过的地方会留下痕迹?

谢谢各位的帮忙
先画背景图可以解决问题

如不用背景填充
直接擦除的话我还没找到相关的函数
麻烦再给个提示 呵呵

3

主题

508

帖子

508

积分

高级会员

Rank: 4

积分
508
发表于 2006-5-29 14:24:00 | 显示全部楼层

Re:GDI下为何位图移动过的地方会留下痕迹?

有一种方法,就是地图编辑器的方法,每个图像块被X(A,B)数组记录, 你的角色走到地图上会先记录你脚下的地图块,你走过后又会画回来,因为我是用VB的,C语言的程序我不懂,但原理应当差不多。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 15:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表