Window Canvas ... Liste

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: Window Canvas ... Liste

BeitragFr, Jul 13, 2012 0:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe ein folgendes prob.


Das Erstellen
Code: [AUSKLAPPEN]
Global OrdnerList:TList = New TList
Global Ordner:TOrdner
Type TOrdner
   Field Window:Tgadget
   Field Canvas:Tgadget
      
   Function Create(Name:String)
      Ordner:TOrdner = New TOrdner
   
      Ordner.window:TGadget = CreateWindow(Name, 50, 50, 350, 450, Main_Canvas, 3)
      Ordner.Canvas:TGadget = CreateCanvas(0, 0, GadgetWidth(Ordner.Window), GadgetHeight(Ordner.Window), Ordner.Window)
      SetGadgetLayout Ordner.Canvas, 1, 1, 1, 1
      EnablePolledInput(Ordner.canvas)
      OrdnerList.Addlast Ordner
      
   End Function
End Type


Das "Malen"
Code: [AUSKLAPPEN]
While WaitEvent()
   Local tmpGadget:TGadget
   Select EventID()
      Case EVENT_TIMERTICK
         RedrawGadget Main_Canvas
         For Ordner:TOrdner = EachIn OrdnerList
            RedrawGadget Ordner.canvas
         Next
         
      Case EVENT_GADGETPAINT
         WindowInstanz
         For Ordner:TOrdner = EachIn OrdnerList
            SetGraphics CanvasGraphics(Ordner.canvas)
            Cls setcolor 0,0,0
            Drawrect   0,0,gadgetwidth(Ordner.canvas),gadgetheight(Ordner.canvas)
            Flip
         Next


laut dem erstellen sollte das canvas allerdings "sich vergrössern" (SetGadgetLayout Ordner.Canvas, 1, 1, 1, 1)

normalerweise sollte das fenster nun komplett schwarz gemalt sein ist es auch bis zum zeitpunkt wo man es vergrössert, dan pauscht der hintergrund vom main_window bzw main_canvas durch.

wie kann das?= bzw warum is das so?

Midimaster

BeitragFr, Jul 13, 2012 8:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hatte das Problem auch schon und lös es seitdem immer so:

BlitzMax: [AUSKLAPPEN]
Canvas=CreateCanvas(0 , 0 , 2000, 1000 , Window)
SetGadgetLayout Canvas , 1,1,1,1


...also einfach immer eine übergroße Canvas beim Start definieren. Durch das Layout wird sie sowieso wieder auf das Window reduziert. Schon tauchen keine Zeichenfehler mehr auf.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Lobby

BeitragFr, Jul 13, 2012 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke bedeutend speicherschonender dürfte es schon sein, wenn man das Canvas auch wirklich nur in der Größe erstellt, in der es benötigt wird. Das eigentliche Problem ist, dass der Viewport nicht automatisch mit angepasst wird, wenn sich die Canvasgröße nachträglich ändert. Es sollte sich also einfach beheben lassen, indem du vor dem Zeichnen den Sichtbereich per SetViewport(0,0,canvas.width,canvas.height) manuell selbst richtig setzest.
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group