Page 1 sur 1

Besoin d'un code 2D

Publié : lun. 21/févr./2011 21:32
par nico
Salut,

Pour réaliser un code d'animation de fenêtre, j'aurais besoin d'une âme charitable pour me composer un code 2D car mes connaissances dans ce domaine sont proche de 0.

Les besoins:
OpenWindowedScreen plein écran, sans bordure qui s'adapte à l'écran de l'ordi
avec une animation d'une image partant d'un zoom de 0 vers la taille réelle
le code doit être adapté pour n'importe quelle taille d'image bien sûr avec un effet
cet effet peut être ce que vous voulez, un retournement, rotation etc...
fond d'écran magenta

C'est pour une démo alors pas la peine de se casser la tête!

L'idée finale est de réaliser une animation de fenêtre à la windev.

Une fois le code 2D, je le complèterais et je le posterais dans la section Trucs et Astuces

Merci à ceux qui voudront bien m'aider, Dobro si tu m'entends :)

Re: Besoin d'un code 2D

Publié : lun. 21/févr./2011 22:06
par Patrick88
dans le temps, sur le fofo de cederavic, y'avait ce genre de truc de posté, faudrait voir avec lui ou dobro, je crois que chris avait aussi un copie du forum suite au nombreux crash intempestif? du pécé de ced. :mrgreen:
regarde aussi sur purearea…

pat

Re: Besoin d'un code 2D

Publié : mar. 22/févr./2011 0:59
par Backup
vla deja un debut

Zoom avec rotation


usejpegimagedecoder ()
usepngimagedecoder ()
usetgaimagedecoder ()
; chemin vers l'image
image$= "C:\Dobro\Mes_Photos\fond_ecran\123.jpg"

Global flag


Enumeration
         #window
         #Image
         #sprite
         #Sprite3D
EndEnumeration

;- Initialisation de DirectX
If initsprite () = 0 Or initkeyboard () = 0 Or initmouse () = 0 Or initsprite3d ()=0
         messagerequester ( "Erreur" , "Impossible d'initialiser DirectX" , 0)
         End
EndIf

examinedesktops ()
Global x_ecran= desktopwidth (0)
Global y_ecran= desktopheight (0)

;- Ouverture de la fenêtre et de l'écran
openwindow ( #window , 0, 0, x_ecran, y_ecran, "" , #PB_Window_BorderLess| #PB_Window_ScreenCentered )
openwindowedscreen ( windowid ( #window ), 0, 0, x_ecran, y_ecran, 0, 0, 0)
                        
; ici on charge l'image pour connaitre sa taille

loadimage ( #Image ,image$ )
x_image= imagewidth ( #Image )
y_image= imageheight ( #Image )
rotation.f=360/x_image
freeimage ( #Image ) ; on peu effacer l'image maintenant ,on a sa dimension
If loadsprite ( #sprite ,image$, #PB_Sprite_Texture ) ; on charge le sprite
         createsprite3d ( #Sprite3D , #sprite ) ; on en fait un sprite 3D
        ZoomSprite3D( #Sprite3D , 1, 1)
EndIf

        
                 ;- début de la boucle
                
Repeat
         examinemouse () ; on demande a purebasic de surveiller les event de souris !
         examinekeyboard () ; on demande a purebasic de surveiller les event de clavier!
        
         startdrawing ( screenoutput ())
                 drawtext ((x_ecran/2)-23, 10, "touche ESC pour quitter" , rgb (255,255,0), rgb (0,0,0))
         stopdrawing ()
         If zoom_x<x_image
                zoom_x=zoom_x+5
                Angle.f=Angle+rotation
                flag=1
         Else
                Angle.f=0
                flag=0
         EndIf
         If zoom_y<y_image
                zoom_y=zoom_y+5
         EndIf
        
         start3d ()
                ZoomSprite3D( #Sprite3D , zoom_x, zoom_y)
                 rotatesprite3d ( #Sprite3D , Angle.f, flag)
                
                 displaysprite3d ( #Sprite3D , (x_ecran/2)-x_image/2,(y_ecran/2)-y_image/2)
                
         stop3d ()
         flipbuffers ()
         clearscreen ( rgb (255,0,255))
Until keyboardpushed ( #PB_Key_Escape )


[Reedit]
améloration de la rotation :)

Re: Besoin d'un code 2D

Publié : mar. 22/févr./2011 1:30
par Backup
arf !! j'avais oublié le fond d'ecran magenta :)