Rect ist eine In-Parameter und ACol, ARow sind die Inidizes der Spalte/Zeile und nicht die Koordinaten
Kannst du mir das vielleicht noch genauer erklären? ich bin jetzt nicht unbedingt ein Delphi-Profi. :/
Wie müsste es denn richtig lauten?
ich weiß nicht ob ich Dich richtig verstanden habe, suchst Du sowas?
Delphi-Quellcode:
public
{ Public-Deklarationen }
MCol,MRow:Integer;
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
if (Acol=MCol) and (Arow=Mrow) then DrawGrid1.Canvas.Draw(Rect.left, rect.top, Image1.Picture.Bitmap);
end;
procedure TForm5.DrawGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
DrawGrid1.MouseToCell(x,y,MCol,MRow);
DrawGrid1.Invalidate;
end;
Ja im Prinzip soll es so sein, aber es soll bei gedrückter Maustaste die Grafik auf dem Drawgrid "speichern". Also dass es dann wie mit einem Pinsel bemalt wird mit dem Bild. Im Moment wird so ja nur das Bild auf dem Drawgrid bewegt.
Eigentlich funktioniert es mit dieser Methode schon relativ gut:
Delphi-Quellcode:
procedure TForm1.MapDrawgridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect:TRect; State: TGridDrawState);
begin
Rect := Mapdrawgrid.CellRect(ACol, ARow);
Mapdrawgrid.Canvas.Draw(Rect.left, rect.top, AuswahlGrafik);
end;
Allerdings würde ich das lieber "Freihand" machen und nicht mit diesem Auswahlrechteck. Es sollte allerdings trotzdem nur bei gedrückter Maustaste "malen". Ist es möglich dieses blaue Auswahlrechteck auszuschalten?