Essai de Panorama mobile :)
Publié : ven. 11/févr./2005 9:34
Je balbutie 
Comment augmenter la vitesse de défilement sans perdre la finesse de l'image ?
Comment rendre possible le chargement de n'importe taille d'image?
( parceque là, toutes autres images chargées sont adaptées à celle de ce Panorama - c'est déjà pas si mal
Y a-t-il une méthode plus subtile que cette "bestiale" tentative?
Tappez pas trop fort!
Ps Il faut évidemment charger l'image jointe


Comment augmenter la vitesse de défilement sans perdre la finesse de l'image ?
Comment rendre possible le chargement de n'importe taille d'image?
( parceque là, toutes autres images chargées sont adaptées à celle de ce Panorama - c'est déjà pas si mal

Y a-t-il une méthode plus subtile que cette "bestiale" tentative?

Tappez pas trop fort!

Ps Il faut évidemment charger l'image jointe

Code : Tout sélectionner
;essai de Panorama mobile
#img = 0
spr=1
UseJPEGImageDecoder(); on charge l'image
Fichier.s = OpenFileRequester("Ouvrir une image", "", "Image|*.bmp;*.jpg", 1)
If LoadImage(#img, Fichier) = 0
End
EndIf
Dim ecran(1024,217)
Resultat = InitSprite()
EcranX = 1024 ; = largeur de l'ecran
EcranY = 217 ; = hauteur de l'ecran
WindowID = OpenWindow(1, 0, 0, 1024, 217, #PB_Window_SystemMenu|#PB_Window_BorderLess , "Souris Bord gauche Ecran = pause; Haut de l'image repart :)")
WindowID = WindowID(1)
Result = OpenWindowedScreen(WindowID,0,0, 1024, 217, 1, 0,0)
StartDrawing(WindowOutput()) ; affichage de l'image
DrawImage(UseImage(0), 0, 0,1024,217)
For x = 0 To 1023
For y = 0 To 216 ; on récupère la couleur du point en x et y
c = Point(x, y)
ecran(x,y)= c
Next y
Next x
StopDrawing()
CreateSprite(1, 1024, 217) ; cree 1 sprites qui sert d'ecran 1
CreateSprite(2, 1024, 217) ; cree 1 sprites qui sert d'ecran 2
Repeat ;Boucle principale
Event=WindowEvent()
GetCursorPos_(CursorPos.POINT) ; position de la souris
MouseX = CursorPos\x
MouseY = CursorPos\y
mx = MouseX-4 : my = MouseY-29 ; - épaisseur en pixel du cadre bleu de la fenêtre
If mx <1 : Delay(800): mx=0: EndIf ; pause relative
If mx>1024 :mx = 1024: EndIf
If my>216 :my = 216 : w = w-1 : If w<1 :w=1: EndIf: EndIf ; w = mouvement géré par le
If my<1 : my= 0 : w = w + 1 : If w>2 :w=0: EndIf: EndIf ; mouvement vertical de la souris
Gosub m_ouvement ;******** Vers Déplacement ********
StartDrawing(SpriteOutput(spr) ) ; on dessine dedans
For x = 0 To 1023
For y = 0 To 216
c= ecran(x,y) ; couleur du point
Plot(x,y,c) ; on affiche le pixel avec la nouvelle couleur
Next y
Next x
StopDrawing()
spr = spr + 1: If spr>2: spr=1: EndIf
DisplaySprite(spr, 0, 0)
FlipBuffers(): ; affiche l'ecran
ClearScreen(0, 0, 0) : ; efface l'ecran
Until Event = #PB_Event_CloseWindow ; Fin par fermeture fenêtre
End ; fin
m_ouvement :
For x = 0 To 1023 ; on bouge les couleurs des points
For y = 0 To 216
k = x + w: If k>1023: k = 0 : EndIf
c = ecran(k,y) ; les couleurs sont "déplacées" en x
ecran (x,y)= c ; réaffectation de la nouvelle couleur
Next y
Next x
Return
