Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как вставить gif. Добавлено: 22.09.03 20:14  

Автор вопроса:  Virtual

Как вставить gif.

Спасибо!

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 Neptus



ICQ: 96166052 

Вопросов: 12
Ответов: 110
 Web-сайт: neptus.fatal.ru
 Профиль | | #1
Добавлено: 23.09.03 09:07

Куда?

Ответить

Номер ответа: 2
Автор ответа:
 lelick_



Вопросов: 7
Ответов: 3
 Профиль | | #2 Добавлено: 29.09.03 22:17

как я понял надо что бы гиф двигался

для этого есть cпециальные контролы

но можно сделать и вот так:

Разместить на form :

Command1 , Command2 , Command3 (commandbuttons)

Text1 (TextBox)

Image1 (Index=0)

Timer1

*************************************************

Dim FrameCount As Long

Private Sub Command1_Click()

Timer1.Enabled = False

If LoadGif(Text1, Image1) Then

FrameCount = 0

Timer1.Interval = CLng(Image1(0).Tag)

Timer1.Enabled = True

End If

End Sub

Private Sub Command2_Click()

Timer1.Enabled = False

End Sub

Private Sub Command3_Click()

Timer1.Enabled = True

End Sub

Private Sub Form_Load()

Text1 = "ball.gif"

Timer1.Enabled = False

End Sub

Private Sub Timer1_Timer()

If FrameCount < TotalFrames Then

Image1(FrameCount).Visible = False

FrameCount = FrameCount + 1

Image1(FrameCount).Visible = True

Timer1.Interval = CLng(Image1(FrameCount).Tag)

Else

FrameCount = 0

For i = 1 To Image1.Count - 1

Image1(i).Visible = False

Next i

Image1(FrameCount).Visible = True

Timer1.Interval = CLng(Image1(FrameCount).Tag)

End If

End Sub

*************************************************

Module

*************************************************

Option Explicit

Public RepeatTimes As Long ''This one calculates,

'' but don''t use in this sample. If You need, You

'' can add simple checking at Timer1_Timer Procedure

Public TotalFrames As Long

Public Function LoadGif(sFile As String, aImg As Variant) As Boolean

LoadGif = False

If Dir$(sFile) = "" Or sFile = "" Then

MsgBox "File " & sFile & " not found", vbCritical

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

MsgBox "This file is not a *.gif file", vbCritical

Exit Function

End If

LoadGif = True

i = j + 2

If Len(fileHeader) >= 127 Then

RepeatTimes& = Asc(Mid(fileHeader, 126, 1)) + (Asc(Mid(fileHeader, 127, 1)) * 256&)

Else

RepeatTimes = 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:

MsgBox "Error No. " & Err.Number & " when reading file", vbCritical

LoadGif = False

On Error GoTo 0

End Function

___________________________________________________________________________

а ещё вот так:

Private Sub Form_Load()

WebBrowser1.Navigate "about:"

End Sub

______________________________________________________________________________

но контролом проще

по моему один есть в activeX на VBNET

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам