Le sprite se retrouve superposé sur son image d'origine. Le mieux est de vous laisser un code exemple.
Appuyé sur la barre d'espace pour exécuter le flip Horizontal. Vous verrez dans ce code que j'ai commenté le redimentionneme du sprite car ça ne fonctionne pas non plus. Peut être que je ne l'emploie pas comme il faut. Merci de l'aide que vous pouvez m'accorder.
Si quelqu'un a dans sa besace un code sans API qui fonctionne, je suis bien entendu preneur.
Code : Tout sélectionner
Enumeration
#MainForm
EndEnumeration
Global Event, Sprite
Procedure SpriteFlipHorizontal(Sprite)
Protected Width = SpriteWidth(Sprite)
Protected Height = SpriteHeight(Sprite)
Protected Dim ColorsArray(Width, height), x, y
StartDrawing(SpriteOutput(Sprite))
DrawingMode(#PB_2DDrawing_AlphaBlend)
For y = 0 To Height-1
For x = 0 To Width-1
ColorsArray(x,y) = Point(x,y)
Next x
Next y
For y = 0 To Height-1
For x = Width-1 To 0 Step -1
Plot((SpriteWidth(Sprite)-1)-x, y , ColorsArray(x,y))
Next
Next
StopDrawing()
EndProcedure
Procedure GameStart()
Protected cr.b = #True
Protected Width = 800
Protected Height = 600
UsePNGImageDecoder()
InitNetwork()
ReceiveHTTPFile("http://s242132022.onlinehome.fr/Download/PureBasic/platform_bench_2.png", GetTemporaryDirectory()+"image.png")
InitSprite() : InitKeyboard() : InitMouse() : InitSound()
OpenWindow(#mainform, 0, 0, Width, Height, "New Game", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#mainform), 0, 0, Width, Height)
Sprite = LoadSprite(#PB_Any, GetTemporaryDirectory()+"image.png", #PB_Sprite_AlphaBlending)
Repeat
Repeat
Event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
End
EndSelect
Until event=0
FlipBuffers()
ClearScreen(RGBA(245, 222, 179, 255))
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Space)
SpriteFlipHorizontal(Sprite)
EndIf
DisplayTransparentSprite(Sprite, 0, 0)
;ZoomSprite(Sprite, 500, 300)
Until KeyboardPushed(#PB_Key_Escape)
DeleteFile(GetTemporaryDirectory()+"image.png")
EndProcedure
GameStart()