# Canvas Hintergrund zur Laufzeit ändern

**URL:** <https://forum.xojo.com/t/canvas-hintergrund-zur-laufzeit-andern/84523>\
**Category:** International\
**Created:** [March 9, 2025, 7:42am UTC](https://forum.xojo.com/t/canvas-hintergrund-zur-laufzeit-andern/84523 "2025-03-09T07:42:04Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sven\_O](https://forum.xojo.com/letter_avatar_proxy/v4/letter/s/77aa72/32.png) [@Sven\_O](https://forum.xojo.com/u/Sven_O)\
**Post date:** [March 9, 2025, 7:42am UTC](https://forum.xojo.com/t/canvas-hintergrund-zur-laufzeit-andern/84523/1 "2025-03-09T07:42:04Z")

</div>

Hallo zusammen,

ich habe da mal eine “Anfängerfrage”. Ist es mit Xojo möglich, den Hintergrund zur Laufzeit eines Canvas zu ändern? Bisher habe ich die Hintergrundfarbe immer via Paint beim Starten festgelegt:

```auto
g.forecolor=Color.rgb(174, 214, 241)
g.fillrect 0,0,g.width,g.height

```

Jetzt möchte ich aber, dass wenn Button B geklickt wird, der Hintergrund eine andere Farbe erhält und beim Klick auf Button A wieder eine andere Farbe.

Grüße

---

<div class="post-metadata">

**Author:** ![Beatrix\_Willius](https://forum.xojo.com/user_avatar/forum.xojo.com/beatrix_willius/32/282_2.png) [@Beatrix\_Willius](https://forum.xojo.com/u/Beatrix_Willius)\
**Post date:** [March 9, 2025, 8:17am UTC](https://forum.xojo.com/t/canvas-hintergrund-zur-laufzeit-andern/84523/2 "2025-03-09T08:17:22Z")

</div>

Du kannst das mit einem Boolean machen oder einer Integer-Property. Sagen wir es ist ein Boolean: NormalColor

Button A Action event:  
NormalColor = True  
Canvas.refresh

Button B Action event:  
NormalColor = False  
Canvas.refresh

Und das Paint event vom Canvas:

if NormalColor then  
g.ForeColor = color 1  
else  
g.Forecolor = color 2  
end if  
g.FillRecht

Oder so ähnlich.

---

<div class="post-metadata">

**Author:** ![Sven\_O](https://forum.xojo.com/letter_avatar_proxy/v4/letter/s/77aa72/32.png) [@Sven\_O](https://forum.xojo.com/u/Sven_O)\
**Post date:** [March 9, 2025, 8:28am UTC](https://forum.xojo.com/t/canvas-hintergrund-zur-laufzeit-andern/84523/3 "2025-03-09T08:28:01Z")

</div>

Okay, das ist eine Idee. Ich dachte ich hätte die Zeichnung per beispielsweise:

```auto
Canvas1.Paint...

```

steuern können. Aber das scheint nicht zu gehen.

---

<div class="post-metadata">

**Author:** ![MarkusR](https://forum.xojo.com/user_avatar/forum.xojo.com/markusr/32/685_2.png) [@MarkusR](https://forum.xojo.com/u/MarkusR)\
**Post date:** [March 9, 2025, 9:18am UTC](https://forum.xojo.com/t/canvas-hintergrund-zur-laufzeit-andern/84523/4 "2025-03-09T09:18:04Z")

</div>

Wenn du eigene Methoden oder Eigenschaften brauchts kannst du das Kontext Menu sub class erstellen beim Canvas benutzen.

Refresh macht die Darstellung vom Control ungueltig und dann wird Paint mit dem Grafik Kontext aufgerufen.

Wenn du das Backdrop Picture vom Canvas setzt malt es sich auch selbst neu

Oder Computed Properties erstellen, die eignen sich dafuer, man setzt z.B. einen Farbwert, merkt sich den und ruft Refresh auf.

Ein Picture Objekt hat auch einen Graphics Kontext, damit kann man direkt malen.

Du kannst das `g As Graphics` vom Paint Event auch an andere Methoden weiter reichen in dem du deiner Methode auch diesen Parameter gibst.

---

<div class="post-metadata">

**Author:** ![Ulrich\_Bogun](https://forum.xojo.com/user_avatar/forum.xojo.com/ulrich_bogun/32/1864_2.png) [@Ulrich\_Bogun](https://forum.xojo.com/u/Ulrich_Bogun)\
**Post date:** [March 9, 2025, 10:51am UTC](https://forum.xojo.com/t/canvas-hintergrund-zur-laufzeit-andern/84523/5 "2025-03-09T10:51:29Z")

</div>

> [@Sven\_O](#):
>
> Okay, das ist eine Idee. Ich dachte ich hätte die Zeichnung per beispielsweise:
> 
> ```auto
> Canvas1.Paint...
> 
> ```
> 
> steuern können. Aber das scheint nicht zu gehen.

Nein. Paint ist ein Event, das Graphics-Objekt steht dir nur innerhalb des Events zur Verfügung.  
Du löst aber ein neues Paint manuell mit Refresh aus.  
Wenn eine komplexere Zeichnung erscheinen soll, kannst du sie außerhalb des Paint-Events in Form eines Pictures vorbereiten. Und dann mit BackDrop zuweisen oder innerhalb des Paint-Events nutzen, wie Markus schon sagte.
