
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
