Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Drehen von Bitmaps oder 4-bitmaps? (https://www.delphipraxis.net/104585-drehen-von-bitmaps-oder-4-bitmaps.html)

snow 6. Dez 2007 20:20


Drehen von Bitmaps oder 4-bitmaps?
 
Hallo

Ich muss ein bitmap drehen(um 90°,180°,270°). ICh muss es in ein Drawgrid zeichen(Gleisbild).

es gibt im netz viele methoden ein Bitmap, bzw eine Tgrafic zu drehen. ICh brauche eine schnelle methode.

Ist das überhaupt realisierbar oder soll ich jedes Bild einfach 4 mal in die Imagebox machen und dann ein anders bild laden.

Loht es sich überhaupt 48x48pixel bitmaps zu drehen oder soll man sie einfache 4 mal in den speicher laden?

Der Code von Finn-Ole Paulsen rechnet ja mit 32Bit-Bitmaps. ICh hab aber nur 16 farben sprich 4Bit-bitmaps. Ich denke das ich da viel unötige rechenzeit rausholen könnte wenn ich nur für 4Bit rechnen lasse oder?

Gruß snow

Muetze1 6. Dez 2007 20:40

Re: Drehen von Bitmaps oder 4-bitmaps?
 
Zitat:

Zitat von snow
Loht es sich überhaupt 48x48pixel bitmaps zu drehen oder soll man sie einfache 4 mal in den speicher laden?

Einmal ablegen bzw laden und dann beim Start einmalig 3x drehen und jeweils ablegen. Dann hast du alle 4 Richtungen und kannst die entsprechend nutzen.

Zitat:

Zitat von snow
Der Code von Finn-Ole Paulsen rechnet ja mit 32Bit-Bitmaps. ICh hab aber nur 16 farben sprich 4Bit-bitmaps. Ich denke das ich da viel unötige rechenzeit rausholen könnte wenn ich nur für 4Bit rechnen lasse oder?

Nein, da 4 Bit Bitmaps 2 Pixel pro Byte haben. Von daher muss man beim drehen auf jeden Fall die Pixel auseinander rechnen und beim Zielbitmap wieder entsprechend zusammen fügen, da die nebeneinander liegenden Pixel nicht wieder nebeneinander in die selbe Zeile kommen. Es würde sich z.B. die Bilder auf 8 Bit zu setzen und dann zu drehen.

snow 7. Dez 2007 19:12

Re: Drehen von Bitmaps oder 4-bitmaps?
 
Hab ich jetzt so gemacht wie du gesagt hast.

Ich hab 4 imagelisten angelegt und eine befüllt (mir 256farben bmp's)

Delphi-Quellcode:
Bildneu := Tbitmap.Create;
Bildalt := Tbitmap.Create;
Gleisbilderimagebox.GetBitmap(1,bildalt);
RotateBitmap(bildalt,bildneu,true);
Gleisbilderimagebox90.Add(bildneu,bildneu);
Bildneu.Free;
Bildalt.Free;
damit wollte ich die bitmaps drehen. ich hab die funktion von

http://home.t-online.de/home/PeterJHaas/delphi.htm

sie soll mit 256farben bmps zurechtkommen. doch ich bekomm ne errormeldung:

'Pixelformat nicht unterstützt'

warum?
Ich habs testweise mal mit ner 24bit bmp ausprobiert(32bit kann ich mit paint nicht abspeichern).

Eidit:// Wenn ich die bmp direkt via bitmap.loadfromfile()lade klappt es!

Gruß snow

Edit2://habs hinbekommen. nach dem getbitmap noch ein

.PixelFormat:=pf8bit;, dann klappts!

Muetze1 8. Dez 2007 15:18

Re: Drehen von Bitmaps oder 4-bitmaps?
 
Zitat:

Zitat von snow
Edit2://habs hinbekommen. nach dem getbitmap noch ein

.PixelFormat:=pf8bit;, dann klappts!

Das meinte ich zuvor. Deshalb ist das Format in dem die Bitmaps vorliegen egal, vor dem drehen einfach diese Zuweisung des PixelFormats machen und dann sind 8 bpp Bilder und die können nach dem drehen auch gleich so weiter verwendet werden.

snow 9. Dez 2007 11:09

Re: Drehen von Bitmaps oder 4-bitmaps?
 
ICh hab aber einen anderen Fehler!

Wenn ich in ein 47x47pixel Bitmap eine horizontale linie bei pixel 24 zeichne so sollte das bild gleich aussehen, wenn ich es um 180°drehe.

Ist aber nicht so! Die line ist ein pixel zu hoch. Wie iss das möglich?

Gruß snow


Edit://fehler gefunden. Der Delphi bildeditor rechnet von 0 bis 46 nicht von 1 bis 47


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

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