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;