Für die spätere Darstellung mehrerer Bilder gleichzeitig verwende ich das CanvasGadget.
Wenn ich jetzt aber die Größe des CanvasGadgets ändere bekomme ich Artefakte bei der Darstellung!?
Artefakte (Linien werden nicht korrekt gezeichnet - hier sollte kein Abstand sein):
Hier mein Code:
Code: Alles auswählen
;PB x64 v.5.62 (Windows 7)
EnableExplicit
Structure GADGET_STRUCT
Canvas.i
StatusBar.i
EndStructure
Structure WINDOW_STRUCT
Id.i
Handle.i
Flags.i
Width.i
Height.i
Event.i
Gadget.GADGET_STRUCT
EndStructure
Structure IMAGE_BUFFER_STRUCT
Width.f
Height.f
FactorX.f
FactorY.f
EndStructure
Global Window.WINDOW_STRUCT
Global ImageBuffer.IMAGE_BUFFER_STRUCT
Procedure.i Render()
Protected X.i
Protected Y.i
Protected Index.i
With Window
If StartDrawing(CanvasOutput(\Gadget\Canvas))
DrawingMode(#PB_2DDrawing_Default)
Box(0,0,ImageBuffer\Width,ImageBuffer\Height,$FFFFFFFF)
DrawingMode(#PB_2DDrawing_Outlined|#PB_2DDrawing_Transparent)
For Y = 0 To 9
For X = 0 To 9
Box(X * ImageBuffer\FactorX,Y * ImageBuffer\FactorY,ImageBuffer\FactorX,ImageBuffer\FactorY,$DDDDDDDD)
DrawText(X * ImageBuffer\FactorX + 3,Y * ImageBuffer\FactorY + 3,Str(Index),$0,$FFFFFFFF)
Index + 1
Next
Next
StopDrawing()
EndIf
EndWith
EndProcedure
Procedure.i Resize()
With Window
\Width = WindowWidth(\Id,#PB_Window_InnerCoordinate)
\Height = WindowHeight(\Id,#PB_Window_InnerCoordinate)
ResizeGadget(\Gadget\Canvas,#Null,#Null,\Width,\Height - StatusBarHeight(\Gadget\StatusBar))
ImageBuffer\Width = GadgetWidth(\Gadget\Canvas,#PB_Gadget_ActualSize)
ImageBuffer\Height = GadgetHeight(\Gadget\Canvas,#PB_Gadget_ActualSize)
ImageBuffer\FactorX = ImageBuffer\Width / 10
ImageBuffer\FactorY = ImageBuffer\Height / 10
Render()
EndWith
EndProcedure
Procedure.i Main()
With Window
\Width = 800
\Height = 600
\Flags = #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget
\Id = OpenWindow(#PB_Any,#Null,#Null,\Width,\Height,#Null$,\Flags)
If \Id
\Handle = WindowID(\Id)
WindowBounds(\Id,\Width,\Height,#PB_Ignore,#PB_Ignore)
\Gadget\StatusBar = CreateStatusBar(#PB_Any,\Handle)
\Gadget\Canvas = CanvasGadget(#PB_Any,#Null,#Null,\Width,\Height - StatusBarHeight(\Gadget\StatusBar))
Resize()
BindEvent(#PB_Event_SizeWindow,@Resize())
Repeat
\Event = WaitWindowEvent()
Select \Event
Case #PB_Event_CloseWindow
If EventWindow() = \Id
Break
EndIf
EndSelect
ForEver
CloseWindow(\Id)
EndIf
EndWith
EndProcedure
Main()