gpt4 book ai didi

vb.net - 在 VB 中使用计时器为 Windows 桌面背景设置动画

转载 作者:行者123 更新时间:2023-12-04 23:15:14 38 4
gpt4 key购买 nike

我正在编写应该使用计时器为桌面背景设置动画的代码,我使用下面的代码实现了这一点,但我不打算将它随机更改为随机壁纸,所以这是我的问题,我正在使用(ffmpeg ) 命令行从 GIF 图像中提取所有帧,然后我正在运行一个具有低间隔 (100) 的计时器,以循环遍历所有帧并使用 User32.dll API 更改背景,但问题是动画不是很流畅,好像你在浏览器中打开一样,而且在动画的过程中程序会很慢,所以不知道有没有别的方法可以换背景不卡顿,下面是我做的至今 :

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

最佳答案

我发现问题出在内存或 CPU因为函数 SystemParametersInfo使用文件 User32.dll文件,所以在后台有很多处理,并且该功能的计时器运行得非常快,WindowsWindows XP 之后确实删除了此功能出于同样的原因,RAM把一切都搞砸了,所以我用这段代码发布了RAM从我更新背景时对我的程序的使用来看,它确实有所不同,它并不完美,但它需要功能强大的 PC:

首先,声明这个函数:

Private Declare Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal hProcess As IntPtr, ByVal dwMinimumWorkingSetSize As Int32, ByVal dwMaximumWorkingSetSize As Int32) As Int32

二、用法:
Sub ReleaseRAM()
Try
GC.Collect()
GC.WaitForPendingFinalizers()
If Environment.OSVersion.Platform = PlatformID.Win32NT Then
SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1)
End If
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Sub

另外,你应该处理定时器的间隔和帧数,如果你有这么多帧要动画,间隔应该很高,所以你必须找到合适的平衡点。

以管理员身份运行程序并给予它高优先级也有帮助。

最后,希望有人会觉得这个有用或有趣:)

关于vb.net - 在 VB 中使用计时器为 Windows 桌面背景设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45905596/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com