Как остановить GIf анимацию в PictureBox по клику на сам PictureBox? - Visual Basic .NET/.NET 4.x
Формулировка задачи:
Добрый день!
Прошу помочь решить вопрос с GIF анимацией в PictureBox.
Задумка такова:
Проигрывается гифка и при клике на на PictureBox анимация прекращается (пауза), при повторном клике анимация продолжается.
Решение задачи: «Как остановить GIf анимацию в PictureBox по клику на сам PictureBox?»
textual
Листинг программы
Imports System.Drawing.Imaging Public Class testGif2 Private aniImage As Bitmap Private isStart As Boolean Private fd As FrameDimension Private jj, nn As Integer Private gifName As String Private Sub testGif2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load isStart = False gifName = "601443440.gif" aniImage = New Bitmap(gifName) If Not ImageAnimator.CanAnimate(aniImage) Then MsgBox("Объект не поддерживает анимацию!") Exit Sub End If fd = New FrameDimension(aniImage.FrameDimensionsList(0)) nn = aniImage.GetFrameCount(fd) Timer1.Interval = NumericUpDown1.Value 'регулируем скорость прокрутки Timer1.Enabled = False End Sub Private Sub PictureBox1_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox1.Click isStart = Not isStart If isStart Then Timer1.Enabled = True End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 'сохраняем текущий фрейм Dim fName As String = _ IO.Path.Combine(Application.UserAppDataPath, IO.Path.GetFileNameWithoutExtension(gifName) & _ "_fr" & jj.ToString & ".jpg") aniImage.Clone.Save(fName, ImageFormat.Jpeg) End Sub Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick If isStart Then aniImage.SelectActiveFrame(fd, jj) Using Frames As New Bitmap(aniImage) PictureBox1.Image = Frames.Clone End Using jj += 1 If jj = nn Then jj = 0 End If End Sub Private Sub NumericUpDown1_ValueChanged(sender As System.Object, e As System.EventArgs) Handles NumericUpDown1.ValueChanged Timer1.Interval = NumericUpDown1.Value End Sub End Class