Here, a sprite is drawn and saved as a PNG.
If you change CreateAndSave variable to zero,
Sprite is not created anymore, but it is just loaded from the PNG file.
Independantly, there is an other sprite to display the text.
Code:
;*************************************************************************************************************************
;- begin
CreateAndSave = 1
a$ = "PureBasic windowed screen"
filename.S = "bull.png"
factice = CreateImage(#PB_Any, 1, 1, 32)
UsePNGImageEncoder()
UsePNGImageDecoder()
InitSprite()
ExamineDesktops()
w0 = DesktopWidth(0)
h0 = DesktopHeight(0)
w1 = w0 * 3 / 4
h1 = h0 * 3 / 4
wnd = OpenWindow(#PB_Any, 0, 0, w1, h1, "Windowed screen", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(wnd), 0, 0, w1, h1)
;- create bull
If CreateAndSave
spr1 = CreateSprite(#PB_Any, w1, h1, #PB_Sprite_AlphaBlending)
If StartDrawing(SpriteOutput(spr1) )
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0, 0, w1, h1, RGBA(0, 0, 0, 0) )
For i = h1 / 3 To 1 Step -1
J = 255 * Pow(I * 3 / h1, 7 / 2)
Circle(w1 / 2, h1 / 2, I, RGBA(J, J, J, J) )
Next
EndIf
StopDrawing()
SaveSprite(spr1, filename, #PB_ImagePlugin_PNG)
Else
spr1 = LoadSprite(#PB_Any, filename, #PB_Sprite_AlphaBlending)
EndIf
;- create text
If StartDrawing(ImageOutput(factice) )
wt = TextWidth(a$)
ht = TextHeight(a$)
EndIf
StopDrawing()
spr2 = CreateSprite(#PB_Any, wt, ht, #PB_Sprite_AlphaBlending)
If StartDrawing(SpriteOutput(spr2) )
DrawingMode(#PB_2DDrawing_AllChannels)
DrawText(0, 0, a$, RGBA(255, 32, 16, 255), RGBA(0, 0, 0, 0) )
EndIf
StopDrawing()
;- display in the main loop
Repeat
Delay(8)
ev = WindowEvent()
ClearScreen(RGB(16, 32, 64) )
t = ElapsedMilliseconds()
u.D = t * #PI / 2000
r.D = h1 / 5
SpriteQuality(#PB_Sprite_NoFiltering)
DisplayTransparentSprite(spr1, 0, 0)
DisplayTransparentSprite(spr1, Cos(u) * r, Sin(u) * r)
SpriteQuality(#PB_Sprite_BilinearFiltering)
DisplayTransparentSprite(spr2, 0, 0)
TransformSprite(spr2, 0, 2 * h1 / 3, w1, 2 * h1 / 3, w1, h1, 0, h1)
FlipBuffers()
Until ev = #PB_Event_CloseWindow