// Hiermit
kann man Bitmaps in Größe und/oder Seitenverhältnis
uses // Vcl.Graphics, Winapi.Wincodec; var bm: TBitmap; procedure TFormx.FormCreate(Sender: TObject); begin bm := TBitmap.Create; end; procedure TFormx.FormDestroy(Sender: TObject); begin FreeAndNil(bm); end; function ResizeBitmap(BMP: TBitmap; NewWidth, NewHeight: integer): Byte; const GRZ = 8192; var FCT: IWICImagingFactory; SCL: IWICBitmapScaler; WIC: TWICImage; procedure NL; begin WIC.Free; SCL := nil; FCT := nil; end; begin if (NewWidth <= 0) or (NewHeight <= 0) or (NewWidth > GRZ) or (NewHeight > GRZ) then begin Result := 1; exit; end; Result := 0; try BMP.AlphaFormat := afIgnored; WIC := TWICImage.Create; WIC.Assign(BMP); FCT := TWICImage.ImagingFactory; FCT.CreateBitmapScaler(SCL); try SCL.Initialize(WIC.Handle, NewWidth, NewHeight, WICBitmapInterpolationModeHighQualityCubic); WIC.Handle := IWICBitmap(SCL); BMP.Assign(WIC); except Result := 2; end; NL; except Result := 3; NL; end; end; // Beispielaufruf procedure TFormx.Button1Click(Sender: TObject); var I: integer; begin bm.LoadFromFile('D:\Bilder\test.bmp'); // zwecks Anschauung --- I := bm.Width; Canvas.Draw(10, 10, bm); // -------------------- Case ResizeBitmap(bm, 300, 300) of 0: Canvas.Draw(20 + I, 10, bm); // z.B. 1: showmessage('Abmaße unzulässig'); 2: showmessage('Umsetzung nicht möglich'); else showmessage('Unbekannter Fehler'); end; end;
|
Zugriffe seit
6.9.2001 auf Delphi-Ecke |