Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Image32: Bild rotieren / drehen (https://www.delphipraxis.net/59595-image32-bild-rotieren-drehen.html)

nano 25. Dez 2005 13:11


Image32: Bild rotieren / drehen
 
Hallo! =)


Hab ein kleines Graphic-Programm und benutze dabei Image32 Komponente als Zeichenfeld. Diese beinhaltet mehrere Ebenen (Layers).

Problem: Ich möchte das Bild um den Mittelpunkt rotieren lassen und komm da nicht zurecht.

Hab das Beispiel, das mit der Komponente mitgeliefert wird, komplett auf mein Programm übertragen und zwar
- Man erstellt eine Neue Image32 Komponente (nennen wir sie mal TEST)
- Der Inhalt vom Zeichenfeld wird gedrecht und in TEST eingezeichnet

Ergebnis: Man sieht da zwar schon, das was gedreht wird, aber die gedrehte Fläche ist weis, das heißt, dass die Ebenen von dem Zeichenfeld wurden gar nicht berücksichtigt!


Wie soll ich denn da vorgehen? Mein Ziel ist nähmlich, dass ich das komplette Bild um Mittelpunkt drehe und alle Ebenen beibehalte (schließlich wird ja da noch weitergezeichnet). Wie kann man das realisieren ohne TEST-Komponente einzuführen, sonder einfach nur den Inhalt der Zeichenfläche samt Ebenen drehen!

Bin schon am Verzweifeln (es handelt sich um eine Facharbeit fürs Abi)

dizzy 25. Dez 2005 14:31

Re: Image32: Bild rotieren / drehen
 
Transform() arbeitet ja lediglich mit TBitmap32 als Parameter. Layer sind jedoch keine Eigenschaft eines Bitmaps, sondern eines TImage32. Das heisst, dass du wohl sämtliche Layer separat drehen musst. Das dürfte jedoch nicht allzu kompliziert sein, da du ja die selbe TAffineTransformation dafür nehmen kannst. Sprich: Einfach das Image32.Bitmap drehen, und dann genau so auch über alle Layer iterieren.

Gruss,
Fabian

nano 25. Dez 2005 15:02

Re: Image32: Bild rotieren / drehen
 
hmmm...

aber dann meldet Delphi "Unkompatible Typen" :-/


ps: Nebenbei, wie ist es dann beim Speichern? Ich bin zwar nicht soweit, aber ist es dann auch so umständlich, wenn man einfach alle Layers als Datei speichern will?

dizzy 25. Dez 2005 16:19

Re: Image32: Bild rotieren / drehen
 
Zitat:

Zitat von nano
aber dann meldet Delphi "Unkompatible Typen" :-/

Ohne Code leider eine völlig wertlose Info ;)

Zitat:

Zitat von nano
ps: Nebenbei, wie ist es dann beim Speichern? Ich bin zwar nicht soweit, aber ist es dann auch so umständlich, wenn man einfach alle Layers als Datei speichern will?

Du musst imho zunächst mit TBitmap.Draw{To}() alle Layer einzeln auf das Bitmap zeichnen bevor sie mit gespeichert werden. Wenn du die Layer getrennt haben möchtest, dann musst du das Hintergrundbitmap sowie jedes einzelne Layer in ein eigenes Bitmap speichern, da BMP schlicht keine Ebenen vorsieht. Beim Laden natürlich dann auch wieder die Layer einzeln aus den Bilddateien rekonstruieren.
Zudem wird es vermutlich nötig sein den Alphakanal der Layer zusätzlich als separates Bitmap für jeden Layer zu speichern, da BMP auch keine Alphakanäle an sich unterstützt. Es kann jedoch auch sein, dass diese Info in einem 32-Bit .bmp erhalten bleibt, da das nötige Byte ja an und für sich vorhanden ist. Ich würds daher erstmal einfach so probieren =)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz