j'ai pas trop compris ton explication donc avec l'aide d'un ami je fais :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
x1, y1 : integer;
begin
p := tbitmap.create;
c := tbitmap.Create;
p.LoadFromFile('point.bmp');
c.LoadFromFile('croix.bmp');
x1 := 700;
y1 := 25;
PaintBox1.Canvas.CopyRect(rect (x, y, x+64, y+64), p.Canvas, rect (0, 0, 64, 64));
p.Free;
c.Free;
end; |
pour le moment ça affiche que les points, donc suffit de faire pareil pour les croix; mais voilà, je bute sur 2 choses :
1/ je n'ai pas compris ce que je dois mettre exactement dans le 1er et 3ème paramètre du CopyRect, ce que vous voyez plus haut c'est pas jolie, c'est une copie de code se trouavnt sur un autre programme qui n'a rien à avoir ...
PaintBox1.Canvas.CopyRect(QUOI_METTRE, p.Canvas, QUOI_METTRE);
les QUOI_METTRE c'est ce que je n'ai pas compris
le code fonctionne, le point s'affiche mais il y a un prob : il ne s'affiche pas EXACTEMENT où le curseur a clicker, il y a un pti décalage
2/ comment faire pour que les points/croix ne s'affichent UNIQUEMENT sur les coins des cases ? (car dans le code plus haut on peux les affichier n'importe où et c'est très laid)
pour info, j'ai réussis à déterminer au click dans un Tedit le n° de la ligne et le n° de la colonne :
1 2 3
| x1 := 700;
y1 := 25;
edit1.text:= inttostr(floor(X/y1))+ ' et ' + inttostr(floor(Y/y1)); |
peut être que je dois l'utiliser ?
Partager