Help me [VB] screenshot

tzR

Membro
oi sou novo por estas bandas e tenho uma pekena duvida, e vim aki para procurar a vossa ajuda. :)
entao é assim: Tou a fazer um programa.. e cheguei a uma parte do programa k keria k ele tirasse screenshots de forma INFINITA, ou seja, sempre que carrego na tecla para tirar screenshot ele adicionava ao nome do screenshot um numero.

exemplo: screenshot1,screenshot2,screenshot3 ....

um pouco do código (em bold) :

Private Sub repete()
Do
engine.Clear
scene.RenderAllMeshes
engine.RenderToScreen
If inp.IsKeyPressed(TV_KEY_ESCAPE) = True Then repetir = False
If inp.IsKeyPressed(TV_KEY_Z) = True Then engine.ScreenShot App.Path & "\screenshots\lala.jpg"
Loop Until repetir = False

Set engine = Nothing
Set tfact = Nothing
Set inp = Nothing
Set scene = Nothing
Set exemplo = Nothing
End
End Sub



Obrigado e aguardo pela vossa resposta :)
 
Que tal algo como inicializares uma variável numérica, incrementá-la e concatenares essa variável ao nome do ficheiro do screenshot.
Algo do género:
Código:
Private Sub repete()
	Do
		integer i=0;
		engine.Clear
		scene.RenderAllMeshes
		engine.RenderToScreen
		If inp.IsKeyPressed(TV_KEY_ESCAPE) = True Then
			repetir = False
		If inp.IsKeyPressed(TV_KEY_Z) = True Then
			engine.ScreenShot App.Path & "\screenshots\lala" & CStr(i) & ".jpg"
		i=i+1
		Loop Until repetir = False

		Set engine = Nothing
		Set tfact = Nothing
		Set inp = Nothing
		Set scene = Nothing
		Set exemplo = Nothing
	End
End Sub

Já não me lembro muito bem de VB, por isso verifica o tipo de variável a função para converter para string e o operador de concatenação. Penso que esteja tudo correcto, mas vale sempre a pena confirmar isso.
 
O k tu fizeste nao deu.
declaraste mal a vareavel i , (dim i as integer) era como deveria ser.
e faltava ali mais alguns parametros .. do genero EndIf e um loop until mal alinhado.

Mas muito obrigado pk nao dava com istu --> & CStr(i) & lool

Agora ja ta kuase a funcar *** ty :)
 
Agora ficou algo do genero :

Private Sub repete()
Dim i As Integer
Dim doit As Boolean
Do
engine.Clear
scene.RenderAllMeshes
engine.RenderToScreen
If inp.IsKeyPressed(TV_KEY_ESCAPE) = True Then repetir = False
If inp.IsKeyPressed(TV_KEY_Z) = True Then
repeat
i = 0
doit = True
If File.Exists("\screenshots\screen" & CStr(i) & ".jpg") Then
engine.ScreenShot App.Path & ("\screenshots\screen" & CStr(i) & ".jpg")
doit = False
End If
i = i + 1
Loop Until doit = False
End If
Loop Until repetir = False

Set engine = Nothing
Set tfact = Nothing
Set inp = Nothing
Set scene = Nothing
Set exemplo = Nothing
End
End Sub

-----

Continua a dar um erro: Sub or function not defined
:(
 
tzR disse:
O k tu fizeste nao deu.
declaraste mal a vareavel i , (dim i as integer) era como deveria ser.
e faltava ali mais alguns parametros .. do genero EndIf e um loop until mal alinhado.

Mas muito obrigado pk nao dava com istu --> & CStr(i) & lool

Agora ja ta kuase a funcar *** ty :)
Pois, tal como disse, já não me lembro da sintaxe correxta do VB, mas a teoria da coisa estava lá.
 
Tens dois Loop's para um único Do.
Um dos If's acaba fora do ciclo Do ... Loop
Tens um End isolado que é um erro de sintaxe.


------------------------------------


tzR disse:
Private Sub repete()
Dim i As Integer
Dim doit As Boolean
Do
engine.Clear
scene.RenderAllMeshes
engine.RenderToScreen
If inp.IsKeyPressed(TV_KEY_ESCAPE) = True Then repetir = False
If inp.IsKeyPressed(TV_KEY_Z) = True Then
repeat
i = 0
doit = True
If File.Exists("\screenshots\screen" & CStr(i) & ".jpg") Then
engine.ScreenShot App.Path & ("\screenshots\screen" & CStr(i) & ".jpg")
doit = False​
End If
i = i + 1​
Loop Until doit = False
End If
Loop Until repetir = False

Set engine = Nothing
Set tfact = Nothing
Set inp = Nothing
Set scene = Nothing
Set exemplo = Nothing

End
End Sub
 
Back
Topo