Vite fait, sans gérer la transparence, mais ce n'est pas difficile à faire si nécessaire.
Code : Tout sélectionner
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Error", "Can't open the sprite system", 0)
End
EndIf
If OpenWindow(0, 0, 0, 800, 600,"icons lighting", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
CreateSprite(0,20,20)
StartDrawing(SpriteOutput(0))
Box(0,0,20,20,RGB(128,128,128))
StopDrawing()
CreateSprite(1,300,300)
StartDrawing(SpriteOutput(1))
DrawingMode(#PB_2DDrawing_Gradient)
BackColor($0000ff)
FrontColor($000000)
LinearGradient(0,0,0,300)
Box(0,0,300,300)
StopDrawing()
rayon=300
angle=0:largeur_angle=45 ;en degrés
iconx=390:icony=290:couleur=RGB(Random(255),Random(255),Random(255))
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Event = 0
ExamineKeyboard()
ClearScreen(RGB(0,0,0))
x1.f=rayon*Cos(Radian(angle))
y1.f=rayon*Sin(Radian(angle))
x2.f=rayon*Cos(Radian(angle+largeur_angle))
y2.f=rayon*Sin(Radian(angle+largeur_angle))
TransformSprite(1,SpriteWidth(0)/2,SpriteHeight(0)/2,SpriteWidth(0)/2,SpriteHeight(0)/2,x1,y1,x2,y2)
DisplaySprite(1,iconx,icony)
DisplaySprite(0,iconx,icony)
FlipBuffers()
angle+2
Until Quit Or KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Error", "Can't open windowed screen!", 0)
EndIf
EndIf
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits