私はタイマーを使用してデスクトップの背景をアニメーション化するコードを作成しています。これは以下のコードを使用して実現しましたが、ランダム壁紙、ここで私の問題は、私はGIF
イメージからすべてのフレームを抽出するコマンドラインを使用している(ffmpeg)、私はすべてのフレームをループし、変更するために、低い間隔(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はい、非常に遅いだけでなく、1秒間フリーズして2〜3フレームスキップしてもかまいません。 –
**キャッチ**の部分を空にしないことをお勧めします。たぶん、いくつかのフレームがスキップされるという例外が発生します。 – Youssef13