TImage Bild drehen
-
Hallo zusammen,
gibt es eine funktion um ein Bild im TImage um z.B. 90° zu drehen?
Danke
-
Nö, zumindest bis einschließlich BCB 6 gibt es da nichts fertiges. Das musst Du schon selbst machen.
Man kann natürlich die einzelnen Pixel auslesen und umsetzen, aber das ist sehr langsam. Schneller wäre die Verwendung von TBitmap::ScanLine.
Schönes Wochenende.
-
void RotateBitmap90Degree(Graphics::TBitmap *srcBitmap) { Screen->Cursor = crHourGlass; try { std::auto_ptr<Graphics::TBitmap> destBitmap(new Graphics::TBitmap()); destBitmap->PixelFormat = pf32bit; srcBitmap->PixelFormat = destBitmap->PixelFormat; int *RowOriginal, *RowRotated; destBitmap->Height = srcBitmap->Width; destBitmap->Width = srcBitmap->Height; for (int y = 0; y < destBitmap->Height; y++) { RowRotated = (int*)destBitmap->ScanLine[y]; for (int x = 0; x < destBitmap->Width; x++) { RowOriginal = (int*)srcBitmap->ScanLine[x]; RowRotated[destBitmap->Width-x] = RowOriginal[y]; } } srcBitmap->Assign(destBitmap.get()); } catch(...) { } Screen->Cursor = crDefault; }
-
Es gibt auch bereits fertige Komponenten, mit denen man Bilder um einen beliebigen Winkelbetrag drehen kann.
-
Oder man greift auf die GDI zurück.
-
Die funktion ist schon super. Funktioniert soweit.
hab auch andere möglichkeiten das Bild zu drehen, aber die sind nicht so schön einfach! In den TreasureLab Komponenten gibts einige Möglichkeiten.
Aber ne funktion wo ich das bild rein gebe und gedreht rauskommt ist schon spitze.Danke!!
-
-