Public Class Form1
Private animatedimage As New Bitmap("C:\MyData\Search.gif")
Private currentlyanimating As Boolean = False
Private Sub OnFrameChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Invalidate()
End Sub
Private Sub AnimateImage()
If currentlyanimating = True Then
ImageAnimator.Animate(animatedimage, AddressOf Me.OnFrameChanged)
currentlyanimating = False
End If
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
AnimateImage()
ImageAnimator.UpdateFrames(animatedimage)
e.Graphics.DrawImage(animatedimage, New Point((Me.Width / 4) + 40, (Me.Height / 4) + 40))
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
BtnStop.Enabled = False
End Sub
Private Sub BtnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnStop.Click
currentlyanimating = False
ImageAnimator.StopAnimate(animatedimage, AddressOf Me.OnFrameChanged)
BtnStart.Enabled = True
BtnStop.Enabled = False
End Sub
Private Sub BtnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnStart.Click
currentlyanimating = True
AnimateImage()
BtnStart.Enabled = False
BtnStop.Enabled = True
End Sub
End Class
8条答案
按热度按时间zynd9foi1#
如果您将它放在PictureBox控件中,它应该可以正常工作
qkf9rpyu2#
当你在后面开始一个长的操作时就不会了,因为你在同一个线程中,一切都停止了。
v1uwarro3#
u4dcyp6a4#
太晚了,但是!将图像设置为PictureBox.Image并设置PictureBox.SizeMode = PictureBoxSizeMode.Zoom就可以实现此目的。
PictureBox.Image = Image.FromFile("location"); // OR From base64 PictureBox.SizeMode = PictureBoxSizeMode.Zoom;
oxosxuxt5#
我遇到了同样的问题,并遇到了不同的解决方案,通过实施,我曾经面临几个不同的问题。最后,下面是我把一些片段从不同的职位在一起,为我工作的预期。
下面是Execution方法,该方法也执行PictureBox控件的调用:
请记住,PictureBox在“属性”窗口中不可见,请执行以下操作:
kpbwa7wx6#
这不是太难。
1.将图片框拖放到窗体上。
1.将.gif文件作为图像添加到图片框中。
1.加载时显示图片框。
需要考虑的事项:
另一种方法:
另一个我发现效果很好的方法是我在code project上找到的异步对话框控件
t0ybt7op7#
我也遇到过同样的问题。整个表单(包括gif)因为在后台长时间的操作而停止重绘。下面是我解决这个问题的方法。
我只是创建了另一个线程来负责这个操作。由于这个初始表单继续重画没有问题(包括我的gif工作)。ShowProgressGifDelegate和HideProgressGifDelegate是表单中的委托,它们将pictureBox with gif的visible属性设置为true/false。
ne5o7dgx8#
请注意,在Windows中,您通常不使用动画Gif,而是使用小AVI动画:有一个Windows原生控件来显示它们。甚至有工具来转换动画Gif到AVI(反之亦然)。