Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Resample oder Resize mit GDI+

  Alt 25. Nov 2010, 17:28
Hallo,

ich möchte gern größere Bilder mithilfe der Funktionen aus der GDI+ -Bibliothek verkleinern. Leider habe ich keine Ahnung, wie ich das so recht anstellen soll. Auch möchte ich, um Resourcen zu schonen, auf fertige Units verzichten.
Ich bin soweit, dass ich die GDI+ initialisiert, Bitmaps angelegt und deren Speicher wieder freigegeben habe. Ich finde aber nichts genaues, mit welchen Funktionen ich ein Resample erreichen kann.

Aufgrund meiner Recherchen vermute ich, dass ich die Größenänderung mit mit GdipDrawImageRect() hinbekommen könnte. Mein Plan sieht so aus:
  1. TBitmap (Source) habe ich schon.
  2. TBitmap (Destination) lege ich an
  3. Mit GdipCreateBitmapFromHBITMAP() erzeuge ich ein GDI+konformes Image von Source
  4. Dasselbe mit Destination
  5. Problem 1: Bei welchem der beiden GDI+ Images muss ich jetzt mit GdipSetInterpolationMode() den Modus festlegen, damit es etwas wird? Oder muss ich das für beide GDI+ Images machen?
  6. Problem 2: Wie Resample ich?
  7. Problem 3: Bekomme ich das Ergebnis mit GdipCreateHBITMAPFromBitmap() wieder zurück?
  8. Beide GDI+ Images mit GdipDisposeImage() wieder freigeben

Ich denke auch, dass ich kein zweites TBitmap brauchte. Ich finde aber keine Funktion, mit der ich einfach so ohne Bezug zur (normalen) GDI ein GDI+ Bitmap erstellen kann. Auch insoweit wäre ich für Hilfe dankbar.
Ich möchte das ganze später in einem von TBitmap abgeleiteten Object unterbringen und würde mir gern das Hilfsbitmap sparen.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat