我正在研究應該使用計時器來動畫桌面背景的代碼,並且我使用下面的代碼實現了該操作,但是我不打算將它隨機更改爲隨機壁紙,所以這裏是我的問題,我使用(ffmpeg)命令行從一個GIF
圖像中提取所有幀,然後我運行一個具有較低間隔(100)的計時器,以遍歷所有幀並更改使用User32.dll
API的背景,但問題是動畫不是很流暢,就像在瀏覽器中打開它一樣,並且在動畫過程中該程序會非常緩慢,所以我不知道是否有其他方式可以更改背景沒有滯後,這是我迄今爲止所做的:在VB中使用計時器動畫Windows桌面背景
Imports System.IO
Public Class Form1
Private Declare Auto Function SystemParametersInfo Lib "user32.dll" (ByVal X As Integer, ByVal Y As Integer, ByVal Z As String, ByVal W As Integer) As Integer
Dim FrameX As Integer
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'If the frame is not exist then loop from the begenning with the frame 0.
If Not File.Exists(Application.StartupPath & "\Frames\animation" & FrameX & ".png") Then
FrameX = 0
End If
Try
SystemParametersInfo(20, 0, Application.StartupPath & "\Frames\animation" & FrameX & ".png", 1 Or 2)
Catch ex As Exception : End Try
FrameX += 1
Timer1.Start()
End Sub
End Class
你是什麼意思** **光滑,你的意思是不是快? 另外,我不明白你爲什麼把Timer1.Stop()放在Timer1_Tick和Timer1.Start()的開頭。 嘗試刪除Timer1.Stop()。您也可以嘗試降低間隔。 – Youssef13
@ Youssef13,是的,它非常「緩慢」,不僅速度慢,它可能會凍結一秒鐘,然後跳過2-3幀。 –
我建議你不要讓** Catch **部分變空。也許有一個例外發生,使一些幀被跳過。 – Youssef13