Page 1 of 1

VideoRecord - Nauhoita "videokameralla" ruutua

Posted: Thu Oct 25, 2007 7:45 pm
by elmo123
Tämä pikku funkkari kaappaa ruudulta alueen ja tekee siitä kuvan. Kuvamuuttujan löytää RECORDS-tyypistä kentällä img.
Kätevää vaikkapa esim. peliin jossa kuvataan ufoja, jossa tämä olisi vain tehosteena, että voisi katsoa videopätkänsä :D

funkkareiden mukana myös pikku esimerkki ;)

Code: Select all

Type RECORD
    Field img
EndType
Dim enemy_x#(100)
Dim enemy_y#(100)
Dim enemy_plusx(100) As Float,enemy_plusy(100) As Float

Dim i As Integer
Dim angle As Integer

'First apply a random position for all enemies 
For i=1 To 100
    enemy_x(i)=Rand(390)
    enemy_y(i)=Rand(290)
    angle=Rand(360)
    enemy_plusx(i)=Cos(angle)
    enemy_plusy(i)=Sin(angle)
Next i

reload=15
'The main loop 
Repeat
    
    'update all enemies
    For i=1 To 100
        Color 0,255,0
        'draw
        Box enemy_x(i),enemy_y(i),10,10,OFF
        
        'move
        enemy_x(i)=enemy_x(i)+enemy_plusx(i)
        enemy_y(i)=enemy_y(i)+enemy_plusy(i)
        
        'bounce
        If enemy_x(i)<0 Or enemy_x(i)>390 Then enemy_plusx(i)= -enemy_plusx(i)
        If enemy_y(i)<0 Or enemy_y(i)>290 Then enemy_plusy(i)= -enemy_plusy(i)
    Next i
    
    Color cbRed
    
    Box MouseX()-1,MouseY()-1,Min(MouseX()-1+100,400)-MouseX()+2,Min(MouseY()-1+70,300)-MouseY()+2,OFF
    If MouseDown(1) Then VideoRecord(MouseX(),MouseY(),99,69)
    If MouseDown(1) And reload>0 And g=0 Then Text 0,0,"Recording...":reload-1
    If reload=0 Then g=1
    If g Then reload+1
    If reload=15 Then g=0
    
    DrawScreen
    
Until KeyHit(28)
ClsColor cbSilver
rec.RECORD = First(RECORD)
play=1
Repeat
    If TextBut(100,100,"Play",0,255,0,cbLightGreen) Then play=1
    If TextBut(100,125,"Pause",0,255,0,cbLightGreen) Then play=0
    If TextBut(100,150,"Stop",0,255,0,cbLightGreen) Then play=0:rec.RECORD = First(RECORD)
    If rec.RECORD = Last(RECORD) And TextBut(100,100,"Play",0,255,0,cbLightGreen) Then rec.RECORD = First(RECORD)
    DrawImage rec\img,0,0
    If rec.RECORD<>Last(RECORD) And play=1 Then rec = After(rec)
    
    DrawScreen

Forever
Function TextBut(x,y,txt$,r1,g1,b1,r2,g2,b2)
r=getRGB(RED)
g=getRGB(GREEN)
b=getRGB(BLUE)
x2=x-TextWidth(txt$)/2
y2=y-TextHeight(txt$)/2
If MouseX()>x2-1 And MouseX()<(x2+TextWidth(txt$))+1 And MouseY()>y2-1 And MouseY()<(y2+TextHeight(txt$))+1 Then
Color r2,g2,b2
gi=1
Else
Color r1,g1,b1
EndIf
CenterText x,y,txt$,2
If gi And MouseHit(1) Then Return 1
EndFunction
Function VideoRecord(x,y,w,h)

w = Min(x+w,ScreenWidth())-x
h = Min(y+h,ScreenHeight())-y
rec.RECORD = New(RECORD)
rec\img = MakeImage(w,h)
MaskImage rec\img,-255,-255,-255

CopyBox x,y,w,h,0,0,SCREEN(),Image(rec\img)

EndFunction 
Kommentteja :D
EDIT:

muokkasin oletusikkunakokojen tilalle ikkunan nykyisen koon, nyt toimii myös omilla ikkunaleveyksillä :)


Re: VideoRecord - Nauhoita "videokameralla" ruutua

Posted: Thu Oct 25, 2007 9:42 pm
by Purple
TOI OLI UPEE!!!!! :o <-- Outo päärynä ;/ Oikei ärsyttää

Re: VideoRecord - Nauhoita "videokameralla" ruutua

Posted: Sun Oct 28, 2007 9:59 pm
by MaGetzUb
ihan ööhh.. tavallinen... MAHTAVA! Aikas kätsy :D Off topic: En keksinyt viel lisättävää tälle kommentille
EDIT:

Kysykääs Marcoderilt apu tuon videon tallennukses .avi muotoon se(hän) varmasti osaa räpätä Dll jutskia. Muuten äänien nauhoottaminen on eri juttu ;)


Re: VideoRecord - Nauhoita "videokameralla" ruutua

Posted: Mon Oct 29, 2007 1:22 pm
by tuhoojabotti
Sitten myös silleen että se toimii ohjelman ulko puolella ja sen videon voi tallentaa vaikka .avi muodossa ;)

Re: VideoRecord - Nauhoita "videokameralla" ruutua

Posted: Mon Oct 29, 2007 2:52 pm
by elmo123
tuhoojabotti wrote:Sitten myös silleen että se toimii ohjelman ulko puolella ja sen videon voi tallentaa vaikka .avi muodossa ;)
noihin toimintoihin tarvii C++:alla tehtyjä DLL:liä ja käsitystä muuntaa kuvasarja .aviin. Itse en tajua avista mitään, sotkua koko formaatti täynnä... :D

Re: VideoRecord - Nauhoita "videokameralla" ruutua

Posted: Sat Dec 01, 2007 1:02 pm
by MAVmaggot
Tosi hieno, tälle tulee varmaan käyttöö :lol:
offtopic: funktiot sisentämättä :x