AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi nach StretchBlt schwarzer Hintergrund
Thema durchsuchen
Ansicht
Themen-Optionen

nach StretchBlt schwarzer Hintergrund

Ein Thema von Helmi · begonnen am 21. Feb 2015 · letzter Beitrag vom 26. Feb 2015
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#31

AW: nach StretchBlt schwarzer Hintergrund

  Alt 26. Feb 2015, 12:16
Ich skaliere nur noch mit dem http://docwiki.embarcadero.com/VCL/X...hics.TWICImage.

Beispiel einer proportionalen Skalierung:
Delphi-Quellcode:
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;
Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#32

AW: nach StretchBlt schwarzer Hintergrund

  Alt 26. Feb 2015, 13:45
Gut regergiert, Sherlock!

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;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (26. Feb 2015 um 14:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#33

AW: nach StretchBlt schwarzer Hintergrund

  Alt 26. Feb 2015, 22:34
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...

Geändert von Harry Stahl (26. Feb 2015 um 22:53 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz