SaveImage() funktioniert nicht bei GDrawing?
Verfasst: 30.01.2026 16:21
Hallo,
ich wollte von einem GDrawing-Beispiel mal das erstellte Bild als solches auch abspeichern,
leider passiert aber überhaupt nichts.
Den fett markierten Teil habe ich zum Beispielcode hinzugefügt, ist da evtl. ein Fehler drin?
ich wollte von einem GDrawing-Beispiel mal das erstellte Bild als solches auch abspeichern,
leider passiert aber überhaupt nichts.
Den fett markierten Teil habe ich zum Beispielcode hinzugefügt, ist da evtl. ein Fehler drin?
Code: Alles auswählen
EnableExplicit
XIncludeFile "gDrawing.pbi"
Global pbLogoSrc
Procedure Draw(image)
Protected i,j
Dim paths.i(4)
If gStartDrawing( ImageOutput(image) )
gClear(RGBA($80,$80,$80,$FF))
gSetPenSize(3)
;
; HEART with PB logo
;
gDrawingMode(#PB_2DDrawing_Path)
gArc(200,100,100,50,150,210) ; 2 arc's and 1 point make a heart
gArc(400,100,100,50,180,210)
gPlot(300,200)
gClosePath()
gDrawingMode(#PB_2DDrawing_Default)
gDrawPath(#PB_Default,RGBA($FF,$FF,$00,$FF)) ; draw current path with yellow color
gDrawingMode(#PB_2DDrawing_Outlined)
gDrawPath(#PB_Default,RGBA($00,$00,$00,$FF)) ; draw current path outlined with black color
gClipPath() ; now set clipping to the same path
gDrawImage(pbLogoSrc,100,75,400,70) ; and draw the PB logo
gResetClip() ; reset clipping
;
; 4 figures, made with paths
;
gClearPath() ; clear the current path
gDrawingMode(#PB_2DDrawing_Path) ; and draw some new paths:
gArc(100,400,20,50, 90, 180) ; check this 4 paths:
gArc(200,400,20,50, 90,-180) ; - they are all 2 gArc's with size 20,50
paths(1) = gGetPath() ; - the x,y coordinates differ
gClearPath() ; - but the main difference is the drawing direction! (last 2 args)
;
gArc(250,400,20,50, 90, 180) ; for paths the drawing order and drawing direction
gArc(350,400,20,50,-90,-180) ; is very important.
paths(2) = gGetPath() ; the drawing order and direction make the direction of the path!
gClearPath()
gArc(400,400,20,50, 90, 180)
gArc(500,400,20,50, 90, 180)
paths(3) = gGetPath()
gClearPath()
gArc(550,400,20,50, 90,-180)
gArc(650,400,20,50,-90,-180)
paths(4) = gGetPath()
gClearPath()
;
; draw 4 paths, draw 4 figures
;
For i = 1 To 4
gClosePath( paths(i) )
gDrawingMode(#PB_2DDrawing_Default)
gDrawPath( paths(i) ,RGBA($FF,$FF,$00,$FF)) ; draw the path with yellow color
gDrawingMode(#PB_2DDrawing_Outlined)
gDrawPath( paths(i),RGBA($00,$00,$00,$FF)) ; draw the path outlined with black color
gClipPath( paths(i) ) ; now set clipping to the same path,
gDrawImage(pbLogoSrc,i*150-50,380,100,30) ; draw the PB logo,
gResetClip() ; and reset the clipping
Next i
gStopDrawing()
EndIf
EndProcedure
Define img
pbLogoSrc = LoadImage(#PB_Any,#PB_Compiler_Home+"Examples\Sources\Data\PureBasicLogo.bmp")
If Not pbLogoSrc : MessageRequester("ERROR","Unable to load PureBasic logo!") : End : EndIf
If gInit()
img = CreateImage(#PB_Any,800,600)
Draw(img)
OpenWindow(#PB_Any,0,0,800,600,"gDrawing: drawing with Path's",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ImageGadget(#PB_Any,0,0,800,600,ImageID( img ))
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
[b] MessageRequester("",GetCurrentDirectory()+"blabla.jpg")
SaveImage(ImageID(img),GetCurrentDirectory()+"blabla.jpg",#PB_ImagePlugin_JPEG)[/b]
gEnd()
EndIf