![]() |
AW: nach StretchBlt schwarzer Hintergrund
Ich skaliere nur noch mit dem
![]() Beispiel einer proportionalen Skalierung:
Delphi-Quellcode:
Sherlock
procedure ResizeImage(aWICImage: TWICImage; NewWidth:Integer);
var scale: IWICBitmapScaler; wicBitmap: IWICBitmap; newHeight:Integer; faktor:Double; begin if Assigned(aWICImage) then begin faktor := NewWidth / aWICImage.Width; newHeight := Round(aWICImage.Height * faktor); aWICImage.ImagingFactory.CreateBitmapScaler(scale); scale.Initialize(aWICImage.Handle, NewWidth, NewHeight, WICBitmapInterpolationModeFant); aWICImage.ImagingFactory.CreateBitmapFromSourceRect(scale, 0,0,NewWidth, NewHeight, wicBitmap); if Assigned(wicBitmap) then aWICImage.Handle := wicBitmap; end; end; |
AW: nach StretchBlt schwarzer Hintergrund
Zitat:
eine interessante Funktion Ich hab das mal für normale Bitmaps (testweise) umgestrickt:
Delphi-Quellcode:
procedure ResizeImage(Bitmap: TBitmap; NewWidth:Integer);
var WICImage : TWICImage; WICBitmap: IWICBitmap; scale : IWICBitmapScaler; newHeight: Integer; faktor : Double; begin If not Assigned(Bitmap) then exit; WICImage := TWICImage.Create; WICImage.Assign(Bitmap); try faktor := NewWidth / WICImage.Width; newHeight := round(WICImage.Height * faktor); WICImage.ImagingFactory.CreateBitmapScaler(scale); scale.Initialize(WICImage.Handle, NewWidth, NewHeight, WICBitmapInterpolationModeFant); WICImage.ImagingFactory.CreateBitmapFromSourceRect(scale, 0,0,NewWidth, NewHeight, WICBitmap); If Assigned(WICBitmap) then WICImage.Handle := WICBitmap; Bitmap.Assign(WICImage); finally // WICImage.Free; end; end; |
AW: nach StretchBlt schwarzer Hintergrund
Stimmt, das geht auch mit der Windows Imaging Component (WIC), die Transparenz bleibt da erhalten.
Kleiner Wermutstropfen ist dabei, dass WIC unter Windows erst ab Vista standardmäßig im System dabei ist. Für XP muss der Anwender Deines Programms das auf dem System evtl. nachinstallieren (allerdings ab Servicepack xp3 ist es wohl schon dabei). Aber allmählich ist die Unterstützung für XP vielleicht sowieso nicht mehr so wichtig... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 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