German Canvas, Panel mit Hintergrundfarbe

Andie

Member
Licensed User
Longtime User
Nach einer Pause habe ich wieder B4X (genauer: B4XPages) für mich entdeckt. Und da taucht gleich ein Layoutproblem bei mir auf.
Ich habe ein Panel myPanel und ein Canvas cnv, das mit dem Panel initialisiert wird: cnv.Initialize(myPanel). Auf dem Canvas werden kleine Boxen gezeichnet, die sich bewegen. Wie kann ich nun die Hintergrundfarbe verändern? Ein Ändern der Panel-Color im Designer bewirkt nichts.
 

klaus

Expert
Licensed User
Longtime User
Und wie werden die Boxen bewegt ?
Ich nehme an dass die neu gezeichnet werden, und dann gibt es Mist mit der Hintergrundfarbe.

Oder willst Du den ganzen Hintergrund mit einer neuen Farbe ersetzen ?
Die Hintergrundfarbe kannst Du nur mit cnv.DrawColor ändern, dann müsstet Du aber alle Boxen neu zeichnen.
Um die ganze Hintergrundfarbe zu ändern wäre es einfacher ein Hintergrundpanel mit dieser Farbe zu erstellen.

In allen Fällen musst Du du an der letzten Stelle wo die Box war die Hintergrundfarbe wieder herstellen.
Das kannst Du mit DrawRect oder DrawCircle machen, je nach der Form der Boxen.
Und dann die Box an der neuen Stelle zeichnen.
 

Andie

Member
Licensed User
Longtime User
Ja, Klaus, die Boxes werden für die Bewegung neu gezeichnet. Die Methode cnv.DrawColor gibt es bei mir nicht (habe das neueste B4A), und auch das Ändern der Panel-Color im Designer hat keinen Effekt. Kann es daran liegen, dass ich das Panel als B4XView und das Canvas als B4XCanvas definiert habe?
 
Last edited:

klaus

Expert
Licensed User
Longtime User
Kann es daran liegen, dass ich das Panel als B4XView definiert habe?
Kann sein.
Dann nehme ich an dass Du den Canvas als B4XCanvas definiert hast ?
Und da gibt es kein DrawColor.
Du musst es mit DrawRect machen.
B4X:
cnv.DrawRect(cnv.TargetRect, xui.Color_Red, True, 1)
Ändern von Color im Designer hat keinen Effekt auf den Canvas.
 
Top