Thema: Delphi Bitmap strecken

Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: Bitmap strecken

  Alt 10. Sep 2004, 23:50
Eindeutig die Graphics32
Alle anderen Verfahren bieten imho nur Stretching nach dem "nearest Neighbor"-Verfahren - also stupide Pixelvervielfältigung. WIrd blockig ohne Ende. Evtl. auch noch lineare Intpl., die aber wie gesagt auch nicht ganz das gelbe vom Ei ist.
Vorgehen bei der G32:
Nach installation "GR32" in die Uses-Klausel aufnehmen, und alles was ein TBitmap war zum TBitmap32 machen.
Delphi-Quellcode:
var
  bmp1, bmp2: TBitmap32;
begin
  bmp1 := TBitmap32.Create;
  bmp2 := TBitmap32.Create;

  bmp1.LoadFromFile('c:\ich bin ein Pfad\ich ein Bild.bmp');

  bmp2.Width := bmp1.Width div 2;
  bmp2.Height := bmp1.Height div 2;

  bmp1.StretchFilter := sfLanczos; // Muss also beim Source-Bitmap gewählt werden!

  bmp1.DrawTo(bmp2, bmp2.BoundsRect, bmp1.BoundsRect);
end;
Damit wäre das Bild nun in seiner Größe halbiert, und bleibt dabei schön .
Als Stretchfilter eingebaut sind:
Nearest Neighbor
lineare Intpl.
Spline-Intpl.
Mitchell
Lanczos (der imho die schönsten Ergebnisse bringt, aber auch der langsamste ist.)

Weitere Vorteile der G32:
- TBitmap32.Pixels[x,y] ist quasi so schnell wie die Scanline-Variante
- Antialiastes Zeichnen von Linien etc. (mit Koordinaten in Integer, Singe, Double, oder einem eigenen Festkommatyp)
- Pixels[x,y] gibts auch in diversen antialiasten Varianten
- Volle Ünterstützung eines 8-Bit Alphakanals
- insgesammt sehr schnell und flexibel
- brauchbar dokumentiert
- Es kommen Visuelle Kompos mit: TImage32, TBitmap32List, TPaintBox32, TRangeBar, TGaugeBar, TImgView32 (quasi ein Image mit Scrollbox - SEHR praktisch )

Ich empfehle die G32 immer sehr gerne, da sie den komplettesten Ersatz für die doch etwas langsamen Delphi-Kompos darstellt, und in der Handhabung aber kaum anders sind!

Wenn du ein Grafik-Prog schreibst, kannst du dir insgesamt damit das Leben leichter machen.

Nächtsle,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat