evlt könntest ja ne art macro mit pb realisieren das die drucken taste drückt - dann start -> ausführen -> mspaint aufruft und dann strg+c drückt
ne mal im ernst - ich guck mal bei api befehlen nach dass man irgendwie evtl das aktive fenster bestimmt und da dann geziehlt irgendwie abgreift - das könnte evlt n ansatz sein - vielleicht habe ich bis ehute abend schon mehr - interessiert mich jetzt auch gerade G*
Von einem Movie einen Screenshot machen
Schau mal hier oder im engl. board nach meinem PB Diresctshow include.
Da ist auch eine Routine drin, um einen Screen zu capturen.
EDIT: http://www.purebasic.fr/english/viewtop ... directshow
Da ist auch eine Routine drin, um einen Screen zu capturen.
EDIT: http://www.purebasic.fr/english/viewtop ... directshow
Zuletzt geändert von inc. am 27.09.2006 15:05, insgesamt 1-mal geändert.
Hier gibts die OOP Option für PureBasic.
Screen Capturen mit: GrapSprite()
MEin Wlan bricht immer zusammenkan also leine Langen Beiträge schreibn. ich bitte mienen RL Freund den Code zu Posten.
MEin Wlan bricht immer zusammenkan also leine Langen Beiträge schreibn. ich bitte mienen RL Freund den Code zu Posten.
Zuletzt geändert von Vallan am 27.09.2006 15:04, insgesamt 1-mal geändert.
Von Vallan, ich poste es,
weil seine Internetverbindung bei langen Paketen
immer mal kurz nen Hänger hat.
Unterschiedlich. Man kann das bild aber auch mit RenderMovieFrame() auf ein Sprite rendern. Allerdings nicht alle Sorten von movies. (Ich dachte von ner DVD, Das geht nämlich nicht mit PB.)
Code Braucht einen Film, und die Ogre Lib.
Der code ist ein bisschen älter Die Textur Parameter stimmen nicht, PB 3.94. Der film wird erst auf ein Sprite dann auf den Screen und dann zu einem Image gegrappt, da ich keine Möglichkeit kenne ein Sprite (schnell) zu einem Image zu machen, und dann auf dieTextur gemahlt.
weil seine Internetverbindung bei langen Paketen
immer mal kurz nen Hänger hat.
Unterschiedlich. Man kann das bild aber auch mit RenderMovieFrame() auf ein Sprite rendern. Allerdings nicht alle Sorten von movies. (Ich dachte von ner DVD, Das geht nämlich nicht mit PB.)
Code Braucht einen Film, und die Ogre Lib.
Code: Alles auswählen
InitEngine3D()
InitSprite()
InitMouse()
InitKeyboard()
InitSound()
InitMovie()
OpenScreen(800,600,32,"Movie Cube")
Add3DArchive("data\",#PB_3DArchive_FileSystem )
#TextureName_SkyDone = "clouds.jpg"
SkyDome(#TextureName_SkyDone, 1)
CreateCamera(0,0,0,100,100)
CameraLocate(0,0,0,50)
Sprite = CreateSprite(1, 320, 320, #PB_Sprite_Texture)
CreateTexture(1, 320, 320)
CreateSprite(2, 320, 320,0)
CreateSprite(3, 800, 600,0)
CreateMaterial(1, TextureID(1))
;{ Create Cube
CreateMesh(0) ; Cube
SetMeshData(0, 0, ?CubePoints , 48)
SetMeshData(0, 1, ?CubeTriangles , 12)
SetMeshData(0, 2, ?CubeTextures , 4);64)
SetMeshData(0, 3, ?CubeNormales , 64)
CreateCamera(0,0,0,100,100)
CameraLocate(0,0,0,50)
DataSection
CubePoints:
Data.f -10,-10,-10
Data.f -10,-10,10
Data.f 10,-10,10
Data.f 10,-10,-10
Data.f -10,10,-10
Data.f -10,10,10
Data.f 10,10,10
Data.f 10,10,-10
Data.f -10,-10,-10
Data.f -10,-10,10
Data.f 10,-10,10
Data.f 10,-10,-10
Data.f -10,10,-10
Data.f -10,10,10
Data.f 10,10,10
Data.f 10,10,-10
CubeNormales:
Data.f -0.5,0,-0.5
Data.f -0.5,0,0.5
Data.f 0.5,0,0.5
Data.f 0.5,0,-0.5
Data.f -0.5,0,-0.5
Data.f -0.5,0,0.5
Data.f 0.5,0,0.5
Data.f 0.5,0,-0.5
Data.f 0,1,0
Data.f 0,1,0
Data.f 0,1,0
Data.f 0,1,0
Data.f 0,-1,0
Data.f 0,-1,0
Data.f 0,-1,0
Data.f 0,-1,0
CubeTriangles:
Data.w 0,4,7
Data.w 0,7,3
Data.w 1,5,4
Data.w 1,4,0
Data.w 2,6,5
Data.w 2,5,1
Data.w 3,7,6
Data.w 3,6,2
Data.w 9,8,11
Data.w 9,11,10
Data.w 12,13,14
Data.w 12,14,15
CubeTextures:
Data.f 0,0
Data.f 0,1
Data.f 1,1
Data.f 1,0
Data.f 0,0
Data.f 0,1
Data.f 1,1
Data.f 1,0
Data.f 0,0
Data.f 0,1
Data.f 1,1
Data.f 1,0
Data.f 0,0
Data.f 0,1
Data.f 1,1
Data.f 1,0
EndDataSection
CreateEntity(0, MeshID(0), MaterialID(1))
;}
LoadMovie(0,"1.avi" ) ;OpenFileRequester() Hier Das movie
PlayMovie(0, #PB_Movie_Rendered)
Image = CreateImage(1,320,320)
DC.l = GetDC_(ScreenID())
Repeat
FlipBuffers()
ClearScreen(0,0,0)
ExamineKeyboard()
ExamineMouse()
;
RotateEntity(0,0.1,0.1,0.1)
If KeyboardPushed(#PB_Key_Left)
KeyX = -1
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = 1
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -1
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = 1
Else
KeyY = 0
EndIf
; KeyZ = MouseWheel()*50
RotateCamera(0,-1*MouseDeltaX(),-1*MouseDeltaY(),0)
MoveCamera(0, KeyX, KeyZ, KeyY)
RenderWorld()
GrabSprite(3, 0, 0, 800, 600 )
ClearScreen(0,0,0)
RenderMovieFrame(Sprite)
;MovieInfo(0)
DisplaySprite(1,0,0)
; make ScreenShot
hDC = StartDrawing(ImageOutput())
BitBlt_(hDC,0,0,320,320,GetDC_(GetDesktopWindow_()),0,0,#SRCCOPY)
StopDrawing()
;
; StartDrawing(SpriteOutput(1))
; For x = 0 To 319
; For y = 0 To 199
; Arrey(x,y) = Point(x,y)
; Next
; Next
; StopDrawing()
;
; StartDrawing(TextureOutput(1))
; For x = 0 To 319
; For y = 0 To 199
; Plot(x,y,Arrey(x,y))
; Next
; Next
; StopDrawing()
ClearScreen(0,0,0)
;
; StartDrawing(ScreenOutput())
; DrawImage(1,0,0)
; StopDrawing()
StartDrawing(TextureOutput(1))
;ResizeImage(1, 640,640 )
DrawImage(ImageID(),0,0,512,512);Box(0,0,640,640,RGB(255,255,0));
StopDrawing()
StartDrawing(ScreenOutput())
;DrawImage(ImageID(),0,0)
StopDrawing()
ClearScreen(0,0,0)
DisplaySprite(3,0,0)
DisplaySprite(1,0,0)
Until KeyboardPushed(#PB_Key_Escape)
ReleaseDC_(ScreenID(),DC)
End
Ne Idee, wie das in PB 4.x aussehen müsste?
Hab am Ende irgendein
POLINK-Fehler gehabt
Es muss doch eine einfachre Möglichkeit geben zum Beispiel ein GIF als Image zu verwenden. Als immer gleich einen Screen zu initialisieren.
Jemand einen Vorschlag?
Hab am Ende irgendein

Es muss doch eine einfachre Möglichkeit geben zum Beispiel ein GIF als Image zu verwenden. Als immer gleich einen Screen zu initialisieren.

Kinder an die Macht http://scratch.mit.edu/
- PureBasic4.0
- Beiträge: 785
- Registriert: 29.10.2006 17:26
- Wohnort: 127.0.0.1
Mein Gott, dass jemand meinen (ich war damals ComputerFreak_PB) alten Thread rausgesucht hat....
@Xaby: keine Ahnung. Ich hatte damals auch immer einen POLINK error bekommen
@Mods: Falls der Account ComputerFreak_PB noch existiert, könnt ihr ihn löschen! Ich benutze nur noch den PureBasic4.0!
@Xaby: keine Ahnung. Ich hatte damals auch immer einen POLINK error bekommen
@Mods: Falls der Account ComputerFreak_PB noch existiert, könnt ihr ihn löschen! Ich benutze nur noch den PureBasic4.0!
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64