Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А к загнать gif, GIF анимация 
:(
    Опции темы
RealMihey
Дата 10.11.2004, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.11.2004

Репутация: нет
Всего: нет



Как сделать так чтобы загрузить gif фаил в PictureBox или в Image или в ченидь другое в vbasike , но так чтобы анимация проигрывалась. smile
PM MAIL   Вверх
Desdichado
Дата 10.11.2004, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 5.4.2004
Где: Киев

Репутация: нет
Всего: 10



Как программно загрузить картинку в PictureBox или Image

Малость переформулировал твой вопрос... smile

Делается это так: Obj.Picture = LoadPicture (ПУТЬ_К_ФАЙЛУ)

Где Obj - имя PictureBox, Image или формы.

Пример:

Picture1.Picture = LoadPicture ("C:\Images\vblogo.jpg")
Добавлено @ 12:55
Можно ли в VB проиграть wav файл?

Можно! В VB всё можно! smile С помощью API ф-ции sndPlaySound из библиотеки winmm.dll (windows multimedia). Вот её объявление:

Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Пример:

sndPlaySound "C:\youpath\vavchik.wav", 1



Это сообщение отредактировал(а) Desdichado - 10.11.2004, 12:53


--------------------
Я, объявляю свой дом безъядерной зоной...
PM MAIL ICQ   Вверх
RealMihey
Дата 11.11.2004, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.11.2004

Репутация: нет
Всего: нет



Блинннннннннннннннн! Да я вкурсе что можно загрузить картинку и
в PictureBox и в Image, но если я загрузил ее туда(gif - группа картинок,(страниц) которые быстро проматываются и получается анимация) то как сделать, чтобы как на движке Gmaker все страницы входящие в этот gif проматывалисьи получалась анимация!

Это сообщение отредактировал(а) RealMihey - 11.11.2004, 07:50
PM MAIL   Вверх
korob2001
Дата 11.11.2004, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Цитата

Блинннннннннннннннн! Да я вкурсе что можно загрузить картинку и
в PictureBox и в Image, но если я загрузил ее туда(gif - группа картинок,(страниц) которые быстро проматываются и получается анимация) то как сделать, чтобы как на движке Gmaker все страницы входящие в этот gif проматывалисьи получалась анимация!

Мне тоже это интересно. Правда я выкрутился так:
1. Разбил GIF на отдельные кадры, в GIF аниматоре.
2. И с помощью цикла проигрывал все эти кадры, на каждой итерации подгружая последующий кадр.

Но мне что-то подсказывает, что есть решение более красивое и оптимальное.



--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
-Mikle-
Дата 11.11.2004, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 8
Всего: 59



Не помню откуда взял, валяется на диске уже пару лет у меня, пример того, что тебе нужно.

1. Создай UserControl
2. Помести туда контрол Image и назови его imgSource
3. Помести Timer, и назови его Timer
4. Присвой свойству Index контрола imgSource, значение 0(ноль)
5. Закинь в модуль UserControl'a, который ты создашь, целиком все то что ниже:

Код

Option Explicit
Dim mTotalFrames As Long
Dim mRepeatTimes As Long
Dim mGifPath As String
Dim FrameCount As Long

Private Sub Timer_Timer()
Dim i As Long
   If FrameCount < TotalFrames Then
       imgSource(FrameCount).Visible = False
       FrameCount = FrameCount + 1
       imgSource(FrameCount).Visible = True
       Timer.Interval = CLng(imgSource(FrameCount).Tag)
   Else
       FrameCount = 0
       For i = 1 To imgSource.Count - 1
           imgSource(i).Visible = False
       Next i
       imgSource(FrameCount).Visible = True
       Timer.Interval = CLng(imgSource(FrameCount).Tag)
   End If
End Sub

Private Sub UserControl_Initialize()
imgSource(0).Move 0, 0, ScaleWidth, ScaleHeight
End Sub

Private Sub UserControl_Resize()
imgSource(0).Move 0, 0, ScaleWidth, ScaleHeight
End Sub

Public Property Get TotalFrames() As Long
   TotalFrames = mTotalFrames
End Property

Public Property Let TotalFrames(ByVal vNewValue As Long)
   mTotalFrames = vNewValue
End Property

Public Property Get RepeatTimes() As Long
   RepeatTimes = mRepeatTimes
End Property

Public Property Let RepeatTimes(ByVal vNewValue As Long)
   mRepeatTimes = vNewValue
End Property

Public Property Get GifPath() As String
   GifPath = mGifPath
End Property

Public Property Let GifPath(ByVal vNewValue As String)
   If Dir(vNewValue) = "" Then
       Err.Raise vbObjectError + 1, , "File not found"
       Exit Property
   End If
   If Right(vNewValue, 3) <> "gif" Then
       Err.Raise vbObjectError + 2, , "File format is not supported"
       Exit Property
   End If
   mGifPath = vNewValue
End Property
Private Function LoadGif(sFile As String, aImg As Variant) As Boolean
   LoadGif = False
   If Dir$(sFile) = "" Or sFile = "" Then
      Err.Raise vbObjectError + 1, , "File not found"
      Exit Function
   End If
   On Error GoTo ErrHandler
   Dim fNum As Integer
   Dim imgHeader As String, fileHeader As String
   Dim buf$, picbuf$
   Dim imgCount As Integer
   Dim i&, j&, xOff&, yOff&, TimeWait&
   Dim GifEnd As String
   GifEnd = Chr(0) & Chr(33) & Chr(249)
   For i = 1 To aImg.Count - 1
       Unload aImg(i)
   Next i
   fNum = FreeFile
   Open sFile For Binary Access Read As fNum
       buf = String(LOF(fNum), Chr(0))
       Get #fNum, , buf 'Get GIF File into buffer
   Close fNum
   
   i = 1
   imgCount = 0
   j = InStr(1, buf, GifEnd) + 1
   fileHeader = Left(buf, j)
   If Left$(fileHeader, 3) <> "GIF" Then
      Err.Raise vbObjectError + 2, , "File format is not supported"
      Exit Function
   End If
   LoadGif = True
   i = j + 2
   If Len(fileHeader) >= 127 Then
       mRepeatTimes = Asc(Mid(fileHeader, 126, 1)) + (Asc(Mid(fileHeader, 127, 1)) * 256&)
   Else
       mRepeatTimes = 0
   End If

   Do ' Split GIF Files at separate pictures
      ' and load them into Image Array
       imgCount = imgCount + 1
       j = InStr(i, buf, GifEnd) + 3
       If j > Len(GifEnd) Then
           fNum = FreeFile
           Open "temp.gif" For Binary As fNum
               picbuf = String(Len(fileHeader) + j - i, Chr(0))
               picbuf = fileHeader & Mid(buf, i - 1, j - i)
               Put #fNum, 1, picbuf
               imgHeader = Left(Mid(buf, i - 1, j - i), 16)
           Close fNum
           TimeWait = ((Asc(Mid(imgHeader, 4, 1))) + (Asc(Mid(imgHeader, 5, 1)) * 256&)) * 10&
           If imgCount > 1 Then
               xOff = Asc(Mid(imgHeader, 9, 1)) + (Asc(Mid(imgHeader, 10, 1)) * 256&)
               yOff = Asc(Mid(imgHeader, 11, 1)) + (Asc(Mid(imgHeader, 12, 1)) * 256&)
               Load aImg(imgCount - 1)
               aImg(imgCount - 1).Left = aImg(0).Left + (xOff * Screen.TwipsPerPixelX)
               aImg(imgCount - 1).Top = aImg(0).Top + (yOff * Screen.TwipsPerPixelY)
           End If
           ' Use .Tag Property to save TimeWait interval for separate Image
           aImg(imgCount - 1).Tag = TimeWait
           aImg(imgCount - 1).Picture = LoadPicture("temp.gif")
           Kill ("temp.gif")
           i = j
       End If
       DoEvents
   Loop Until j = 3
' If there are one more Image - Load it
   If i < Len(buf) Then
       fNum = FreeFile
       Open "temp.gif" For Binary As fNum
           picbuf = String(Len(fileHeader) + Len(buf) - i, Chr(0))
           picbuf = fileHeader & Mid(buf, i - 1, Len(buf) - i)
           Put #fNum, 1, picbuf
           imgHeader = Left(Mid(buf, i - 1, Len(buf) - i), 16)
       Close fNum
       TimeWait = ((Asc(Mid(imgHeader, 4, 1))) + (Asc(Mid(imgHeader, 5, 1)) * 256)) * 10
       If imgCount > 1 Then
           xOff = Asc(Mid(imgHeader, 9, 1)) + (Asc(Mid(imgHeader, 10, 1)) * 256)
           yOff = Asc(Mid(imgHeader, 11, 1)) + (Asc(Mid(imgHeader, 12, 1)) * 256)
           Load aImg(imgCount - 1)
           aImg(imgCount - 1).Left = aImg(0).Left + (xOff * Screen.TwipsPerPixelX)
           aImg(imgCount - 1).Top = aImg(0).Top + (yOff * Screen.TwipsPerPixelY)
       End If
       aImg(imgCount - 1).Tag = TimeWait
       aImg(imgCount - 1).Picture = LoadPicture("temp.gif")
       Kill ("temp.gif")
   End If
   TotalFrames = aImg.Count - 1
   Exit Function
ErrHandler:
   Err.Raise Err.Number, Err.Source, Err.Description
   LoadGif = False
   On Error GoTo 0
End Function


Public Sub StartGif()
   Timer.Enabled = False
   If LoadGif(mGifPath, imgSource) Then
      FrameCount = 0
      Timer.Interval = CLng(imgSource(0).Tag)
      Timer.Enabled = True
   End If
End Sub

Public Sub StopGif()
   Timer.Enabled = False
End Sub

Public Sub ContinueGif()
   Timer.Enabled = True
End Sub



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.