游戏开发论坛

 找回密码
 立即注册
搜索
楼主: Siner

BitBlt

[复制链接]

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
 楼主| 发表于 2005-11-18 21:35:00 | 显示全部楼层

Re:BitBlt

挺神奇的
我用的BitBlt从picturebox中把图绘到form中
那么这个不用picturebox控件的话,又如何来做!!

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2005-11-18 21:35:00 | 显示全部楼层

Re:BitBlt


时间控件?你指的是Timer吗?
是可以不要它了。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2005-11-18 21:40:00 | 显示全部楼层

Re: Re:BitBlt

Siner: Re:BitBlt

挺神奇的
我用的BitBlt从picturebox中把图绘到form中
那么这个不用picturebox控件的话,又如何来做!!



首先你可以用DX。
如果你一定要用BitBlt的话,也可以使用StdPicture对象。

2

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2005-11-19 11:02:00 | 显示全部楼层

Re: BitBlt

不知道怎么让它刷新,导至图像移动过去后,后面全是残留景象


1.创建两个内存DC (dc1,dc2). 把桌面blit到dc1.
2.blit dc1 到dc2, 将移动位置的图片blit到dc2, blit dc2 到桌面。
3.重复第2步.
........

就这样了。

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
 楼主| 发表于 2005-11-19 19:41:00 | 显示全部楼层

Re: Re:BitBlt

Do
tm1=timeGetTime
' 这里是游戏的运算代码
' 这里是游戏的渲染代码

do while timeGetTime-tm1<LTime
  DoEvents
Loop

Loop


我试着用这种方法加到这个泡泡程序里了。
可是控制方面似乎出了些问题。
说不上来,总觉得反应迟钝了一点还是怎么了。
怪怪的。

8

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2005-11-19 23:44:00 | 显示全部楼层

Re:BitBlt

楼上的请把DoEvents放在第一个Loop下看看:

Do
   tm1=timeGetTime
   ' 这里是游戏的运算代码
   ' 这里是游戏的渲染代码

    do while timeGetTime-tm1<LTime
    Loop

    DoEvents
Loop

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
 楼主| 发表于 2005-11-20 01:31:00 | 显示全部楼层

Re:BitBlt

楼上的这种写法我想不通。
do while timeGetTime-tm1<LTime
    exit do
Loop
DoEvents
或许从开始就写错了,这样写我似乎能想的通些。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2005-11-20 12:44:00 | 显示全部楼层

Re:BitBlt

36、37楼的方法都不对。

36楼的在Do...Loop循环中什么都没有加,相当于在延时的时候让系统一直处于什么事情都不做的“半死机”状态,直到延时完成之后,才把控制权转让系统,有可能造成进一步延时。

37楼的相当于直接让里面的Do...Loop循环失效,起不到任何延时作用。

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
 楼主| 发表于 2005-11-20 20:08:00 | 显示全部楼层

Re:BitBlt

那应该如何写。
Do
    x = x + 1    '横坐标  + 1

    Do While timeGetTime - tm1 < LTime
        tm1 = timeGetTime
        Exit Do
    Loop
Loop
这样的话,我觉得也有问题
并不是LTime的时候才移动1步,而只是LTime的时间才刷新一次,其实已经移了不少了。

8

主题

68

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2005-11-20 22:41:00 | 显示全部楼层

Re: Re:BitBlt

sandy_zc_1: Re:BitBlt

36、37楼的方法都不对。

36楼的在Do...Loop循环中什么都没有加,相当于在延时的时候让系统一直处于什么事...


sandy_zc_1说的“半死机”状态是有些道理,我还真未想过,但这并不影响效率,至少做小游戏够用了。这儿有一个例子,是我用这个结构做的,才学DDarw,所以做了个directX 7程序的演示(做的不好,还请多多包涵)。我运行时好象没能发现“半死机”的问题,或许“半死机”的状态持续时间太短,看不出来而已。如果有更好的方法来控制游戏循环的话,还请赐教。谢谢!
[em1]

sf_20051120224114.rar

389.65 KB, 下载次数:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 16:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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