Einzelnen Beitrag anzeigen

Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Randpixel von Icons glätten oder Imagelist mit PNG?

  Alt 21. Feb 2007, 06:59
Zitat von glkgereon:
Wie genau machst du dieses Abmischen? [...] Das kann doch nicht so schwer sein!
Das ist einfacher als du denkst. Hier ein Paar Ausschnitte aus der Unit:
Delphi-Quellcode:

//Diese Funktion wollen wir später mal aufrufen
function AddPNGToImageList(PNG: TPNGObject; Backcolor:Graphics.TColor;ImageList:TCustomImageList):Integer;
var
  BMP:Graphics.TBitmap;
begin
  BMP:=Graphics.TBitmap.Create;
  PNGtoBitmap(PNG, BMP, Backcolor, ImageList.Width, ImageList.Height);
  Result:=ImageList.AddMasked(BMP,BMP.Canvas.Pixels[BMP.Width-1,0]);
  BMP.Free;
end;

//Das ist das eigentliche Abmischen
procedure PNGtoBitmap(PNG : TPNGObject; BMP : Graphics.TBitmap; BackColor : Graphics.TColor; Width, Height: Integer);
begin
  BMP.PixelFormat:=pf16bit;
  BMP.Width:=Width;
  BMP.Height:=Height;
  BMP.Canvas.Brush.Color:=Backcolor;
  BMP.Canvas.FillRect(Rect(0,0,BMP.Width,BMP.Height));
  if Assigned(PNG) then
    PNG.Draw(BMP.Canvas,Rect(0,0,BMP.Width,BMP.Height));
end;
Natürlich könnte man das alles noch viel schöner schreiben (und vielleicht auch schneller). Aber es funktioniert und das reicht mir.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat