Einzelnen Beitrag anzeigen

Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: DrawGrid und Transparente Bitmaps ?

  Alt 8. Aug 2005, 20:01
Zitat von klomann3:
Im Form Create wird erstmal ''rectangle'' vorbereitet.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender : TObject);
var
rectangle: TRect;
begin
  rectangle := rect(0,0,32,32); //32 und 32 stehen für Höhe und Breite des Images
.............
end;
Was denn nun? rectangle als globale oder lokale Variable?
Zitat:
Delphi-Quellcode:
procedure TForm1.DrawGrid1DrawCell(Sender : TObject; Acol, Arow : integer;
  Rect : TRect; State : TGridDrawState);
var
  Tile : TImage;
begin
  Tile := Timage.Create(self);
  Tile.Picture.Bitmap.TransparentColor := Tile.Picture.Bitmap.Canvas.Pixels[1,1];
  Tile.Picture.Bitmap.Transparent := True;
............
Drawgrid1.Canvas.CopyRect(Drawgrid1.CellRect(acol, arow), Tile.Picture.Bitmap.Canvas, rectangle);
end;
Nimm doch ein TBitmap statt des Images. Und wenn du schon PNG benutzt, könntest du gleich 32-bit unterstützen, das DrawGrid ersetzt du dann durch das Image der GR32-Lib .

Wenn du das nicht willst: Versuch es mal mit Bitmap.Transparent := true; oder stelle dieses Beispiel aus der OH auf dein DrawGrid um:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

var
  Bitmap : TBitMap;
begin
  Bitmap := TBitmap.Create;
  try
    with Bitmap do begin
      LoadFromFile('C:\Programme\Gemeinsame Dateien\Borland Shared\Images\Splash\256color\factory.bmp');
      Transparent := True;
      TransParentColor := BitMap.canvas.pixels[50,50];
      Form1.Canvas.Draw(0,0,BitMap);
      TransparentMode := tmAuto;
      Form1.Canvas.Draw(50,50,BitMap);
    end;
  finally
    Bitmap.Free;

  end;
end;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat