# Canvas in 90 Grad Schritten drehen

**URL:** <https://forum.xojo.com/t/canvas-in-90-grad-schritten-drehen/84974>\
**Category:** Deutsch\
**Created:** [April 12, 2025, 12:29am UTC](https://forum.xojo.com/t/canvas-in-90-grad-schritten-drehen/84974 "2025-04-12T00:29:59Z")\
**Posts on this page:** 8\
**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:** [April 12, 2025, 12:29am UTC](https://forum.xojo.com/t/canvas-in-90-grad-schritten-drehen/84974/1 "2025-04-12T00:29:59Z")

</div>

**Hey zusammen!**

Ich brauch mal wieder Euer geschätztes Wissen 🙂

Ich möchte per Knopfdruck mein viereckiges Canvas in **90°-Schritten** drehen.

Hat jemand eine Idee, wie ich das schnell und möglichst einfach umsetzen kann? ⚙

**Danke schon mal & viele Grüße! ✌**

---

<div class="post-metadata">

**Author:** ![Martin\_T](https://forum.xojo.com/letter_avatar_proxy/v4/letter/m/a88e57/32.png) [@Martin\_T](https://forum.xojo.com/u/Martin_T)\
**Post date:** [April 12, 2025, 12:41am UTC](https://forum.xojo.com/t/canvas-in-90-grad-schritten-drehen/84974/2 "2025-04-12T00:41:00Z")

</div>

Schau Dir mal den Blog Beitrag von Xojo an. Der zeigt Dir, wie Du ein Bild (Picture) rotierst.

> **[Rotate that Picture! – Xojo Programming Blog](https://blog.xojo.com/2022/08/29/rotate-that-picture/)**

---

<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:** [April 12, 2025, 2:13am UTC](https://forum.xojo.com/t/canvas-in-90-grad-schritten-drehen/84974/3 "2025-04-12T02:13:27Z")

</div>

Wow, damit hatte ich ja gar nicht so schnell gerechnet! Vielen lieben Dank für die schnelle Antwort! 😊

Der Blog zeigt genau das, was ich mir vorgestellt habe – einfach perfekt! ✨

Danke nochmal! 🙌

---

<div class="post-metadata">

**Author:** ![frank\_esselbach](https://forum.xojo.com/letter_avatar_proxy/v4/letter/f/439d5e/32.png) [@frank\_esselbach](https://forum.xojo.com/u/frank_esselbach)\
**Post date:** [April 13, 2025, 7:25am UTC](https://forum.xojo.com/t/canvas-in-90-grad-schritten-drehen/84974/4 "2025-04-13T07:25:32Z")

</div>

Kommt darauf an, wie schnell es gehen muss. Der Zugriff über RGBSuface.pixel(x,y) ist recht flott, kann aber natürlich nicht mit dem C-Code aus einem Plugin mithalten. Der Vorteil wäre, dass es mit Bordmitteln möglich ist. Einfach mal ausprobieren:

1. ein Picture in der “gedrehten” Größe neu anlegen
2. mit zwei geschachtelten Schleifen im Original lesen und vertauscht ins Picture schreiben
3. das neue Picture ins Canvas kopieren, z.B. über Backdrop

Eventuell muss da am Canvas noch was skaliert werden, sofern es nicht quadratisch ist …

Wenn ich heute abend Zeit habe, schreib ich mal ein Beispiel. Es beruht darauf, dass man durch Spiegeln auch Drehungen “simulieren” kann.

---

<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:** [April 13, 2025, 2:03pm UTC](https://forum.xojo.com/t/canvas-in-90-grad-schritten-drehen/84974/5 "2025-04-13T14:03:04Z")

</div>

Das Beispiel würde mich sehr interessieren. Ich war auch schon mehr an einer Flipfunktion am überlegen, weil meine Bilder alle viereckig sind.

---

<div class="post-metadata">

**Author:** ![Michael\_Hußmann](https://forum.xojo.com/user_avatar/forum.xojo.com/michael_hu%C3%9Fmann/32/438_2.png) [@Michael\_Hußmann](https://forum.xojo.com/u/Michael_Hu%C3%9Fmann)\
**Post date:** [April 13, 2025, 9:59pm UTC](https://forum.xojo.com/t/canvas-in-90-grad-schritten-drehen/84974/6 "2025-04-13T21:59:58Z")

</div>

Wenn Du nicht die eingebaute Rotate-Funktion verwenden willst (das dürfte die schnellste Variante sein, aber ich habe es nicht ausprobiert), kannst Du es auch leicht ohne diese bewerkstelligen. Zum Beispiel:

```auto
Public Function RotateClockwise90Degrees(aPicture as Picture) As Picture
  var originalWidth as Integer = aPicture.Width
  var maxX as Integer = originalWidth - 1
  var originalHeight as Integer = aPicture.Height
  var maxY as Integer = originalHeight - 1
  var rotatedPicture as new Picture(originalHeight, originalWidth)
  var originalRGBSurface as RGBSurface = aPicture.RGBSurface
  var rotatedRGBSurface as RGBSurface = rotatedPicture.RGBSurface
  var x, y as Integer
  
  for y = 0 to maxY
    for x = 0 to maxX
      rotatedRGBSurface.Pixel(maxY - y, maxX - x) = originalRGBSurface.Pixel(x, y)
    next x
  next y
  
  return rotatedPicture
End Function

```

---

<div class="post-metadata">

**Author:** ![Antonio\_Rinaldi](https://forum.xojo.com/user_avatar/forum.xojo.com/antonio_rinaldi/32/331_2.png) [@Antonio\_Rinaldi](https://forum.xojo.com/u/Antonio_Rinaldi)\
**Post date:** [April 14, 2025, 4:48pm UTC](https://forum.xojo.com/t/canvas-in-90-grad-schritten-drehen/84974/7 "2025-04-14T16:48:43Z")

</div>

… das ist schneller

```auto
Public Function Rotate90Degrees(extends p as Picture, clockWise as Boolean = True) As Picture
  Var thePicture As New Picture(p.Height, p.Width)
  thePicture.Graphics.SaveState
  Const kPi As Double=3.1415926535
  Var angle As Double=kPi/2
  If Not clockWise Then angle=-angle
  Var dx As Double=p.Width/2
  Var dy As Double=p.Height/2
  
  thePicture.Graphics.Translate dy, dx
  thePicture.Graphics.Rotate angle
  thePicture.Graphics.Translate -dx, -dy
  
  thePicture.Graphics.DrawPicture p, 0, 0
  
  Return thePicture
  
End Function

```

---

<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:** [April 16, 2025, 10:03pm UTC](https://forum.xojo.com/t/canvas-in-90-grad-schritten-drehen/84974/8 "2025-04-16T22:03:22Z")

</div>

Ich habe das jetzt testen können. Vielen Dank für die Hilfe. Das ist tatsächlich der schnellere Weg.
