我编写了一个文字滚动程序,我是用以下方法编写的:dim T as long
Do
T = timeGetTime
'T = GetTickCount
Display
Do While timeGetTime - T < CC
Add
DoEvents
Loop
Loop
其中CC是一个常量,display函数用于在picturebox上显示文本,add函数用于进行文字载入和文字移动处理(文字左移一个像素点)。然后这个程序界面会通过设备显示到视频屏(1280*32,约八米长,刷新率:60HZ)上。
但是问题出现了,文字在移动过程中总会定时出现跳动,严重影响了移动的平滑性,这在视频屏上十分明显。
我调整过CC的值,但是没用用,哪个值都会有跳动,只是间隔不同。为此我非常着急。
请教高手这个问题如何解决?
Do
T = timeGetTime
'T = GetTickCount
Display
Do While timeGetTime - T < CC
Add
DoEvents
Loop
Loop
其中CC是一个常量,display函数用于在picturebox上显示文本,add函数用于进行文字载入和文字移动处理(文字左移一个像素点)。然后这个程序界面会通过设备显示到视频屏(1280*32,约八米长,刷新率:60HZ)上。
但是问题出现了,文字在移动过程中总会定时出现跳动,严重影响了移动的平滑性,这在视频屏上十分明显。
我调整过CC的值,但是没用用,哪个值都会有跳动,只是间隔不同。为此我非常着急。
请教高手这个问题如何解决?
解决方案 »
- &号是不是取地址啊?
- 改变窗口大小和拖动窗口时那个虚框是用什么画的?
- 最后八十分求救三个问题,分虽然不多,但我结贴速度从来未成超过一天!!!!
- 请教:关于adoconnection 创建问题?急
- 请教,如何用VBA打开网上邻居中的文件。
- 为什么在VB6中调试程序调试时,有时程序退出了,但是 调试工具栏的 【中断】和【停止】按钮还是有效的,这就意味着,被调试的程序还没有结束。
- 求助]如何把数据库内两个表合并?
- 谁有Install shield的中文使用说明?
- 棘手问题,高手请进
- 有关 Virtual Recordset.
- 新手问题:如何写语句判断一字符串是否为tab制表符
- 请教:怎样才能学好VBA+Access编程呢?
Dim bShow As Boolean
Dim iScroll As IntegerPrivate Sub Timer1_Timer()
If bShow Then
bShow = False
Picture1.Visible = False
Picture2.Visible = True
Picture1.Cls
Picture1.CurrentX = iScroll
Picture1.CurrentY = 30
Picture1.Print strSamp
Else
bShow = True
Picture1.Visible = True
Picture2.Visible = False
Picture2.Cls
Picture2.CurrentX = iScroll
Picture2.CurrentY = 30
Picture2.Print strSamp
End If
iScroll = iScroll + 30
If iScroll > 1800 Then
Timer1.Enabled = False
End If
End Sub
我认为你的Add和Display函数的效率对此也会产生影响.而且这种循环定时CPU占用率很高.
Dim pm_tsOld As String
Dim LTxt As Integer
Private Sub Form_Load()
pm_tsOld = "其中CC是一个常量,display函数用于在picturebox上显示文本,add函数用于进行文字载入和文字移动处理(文字左移一个像素点)。然后这个程序界面会通过设备显示到视频屏(1280*32,约八米长,刷新率:60HZ)上。"
Timer1.Interval = 500
End SubPrivate Sub Timer1_Timer()
Text1 = pm_tsOld
LTxt = Len(pm_tsOld)
'Text1.Left = 7680 - 30 * LTxt
'Text1.Width = 60 * LTxt
If LTxt > 0 Then
pm_tsOld = Mid(pm_tsOld, 2, LTxt - 1) & Mid(pm_tsOld, 1, 1)
End If
End Sub
工程引用DX7Option ExplicitDim DX As New DirectX7
Dim DD As DirectDraw7
Dim DDSPrimary As DirectDrawSurface7
Dim ddsd As DDSURFACEDESC2
Private Sub Form_Load()
Set DD = DX.DirectDrawCreate("")
DD.SetCooperativeLevel Me.hWnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN
DD.SetDisplayMode 1024, 768, 16, 0, 0 'DDSDM_DEFAULT
ddsd.lFlags = DDSD_CAPS
ddsd.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE
ddsd.lWidth = 100
ddsd.lHeight = 100
Set DDSPrimary = DD.CreateSurface(ddsd)
DDSPrimary.SetFontBackColor RGB(255, 255, 255)
End Subsub DrawTextStr()
DDSPrimary.SetForeColor VBRED
DDSPrimary.DrawText 500, 300, "Hello World", True
End Sub
如果绘图的频率高于显示器刷新频率,那么每帧都不能显示完整画面。
还有知道播放电影用的是多少频率吗?24帧/秒,在每帧图都不一样的情况下,刷新太快肉眼反而反映不过来,会觉得眼花。
http://blog.yesky.com/141/wallescai/1675141.shtml
DDSPrimary.DrawText 500, 300, "Hello World", True怎么改位置呀?我改500改成1000都没变的
vb 中使用MMControl播音的时候,资源被占用了,其他程序模块都需要等待播音结束才运行,如何解决