Einzelnen Beitrag anzeigen

Zwixx

Registriert seit: 2. Nov 2006
37 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Anzeige einer halbtransparenten Grafik auf einem Formula

  Alt 23. Jul 2007, 08:07
Danke

hat mich noch ein wenig fummelei gekostet, aber jetzt funktioniert es.

für diejenigen, die das gleiche Problem haben... hier wie ichs gelöst habe:

Delphi-Quellcode:
procedure TForm.Button8Click(Sender: TObject);
var
  x, y : Integer;
  rgn, rgn2 : THandle;
  function icotobmp(Icon: TIcon): tbitmap;
  begin
    result := TBitmap.create;
    result.Width := Icon.Width;
    result.Height := Icon.Height;
    result.Canvas.Draw(0, 0, Icon);
  end;
begin
  rgn := CreateRectRgn(0, 0, pnl.Width, pnl.Height);

  with icotobmp(img.Picture.Icon) do
  begin
    for x := 0 to img.Width do
      for y := 0 to img.Height do
      begin
        if Canvas.Pixels[x, y] = Canvas.Pixels[0, 0] then
        begin
          rgn2 := CreateRectRgn(x, y, x+1, y+1);
          CombineRgn(rgn, rgn, rgn2, RGN_XOR);
          DeleteObject(rgn2);
        end;
      end;
    Free;
  end;
  setwindowrgn(pnl.Handle, rgn, True);
  deleteObject(rgn);
end;
Nachtrag: wie ich inzwischen herausgefunden habe, ist Icon.Width/Height nur ein 'Näherungswert'... deshalb aufpassen was man an Höhe und Breite des Icons hat... wenn man direkt ein Bitmap hat ist das eh egal
  Mit Zitat antworten Zitat