Ahora comprendo la cara de asombro de cHackAll
, yo también me quedé a cuadros
Código Delphi
[-]
Procedure TForm1.Cuadrado (Const X,Y :integer);
Begin
With Canvas Do
Begin
Pen.Mode := pmCopy;
MoveTo (Origen.X,Origen.Y);
Rectangle (Origen.X,Origen.Y,Punto.X,Punto.Y);
MoveTo (Origen.X,Origen.Y);
Rectangle (Origen.X,Origen.Y,X,Y);
end; end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Button = mbLeft Then
Begin
Pintando := True;
Canvas.MoveTo (X,Y);
Origen.X := X;
Origen.Y := Y;
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
If Pintando Then
begin
Punto := Point (X,Y);
ultimo := Point(x,y);
BorrarUltimo := True;
Canvas.Pen.Style := psDot;
Canvas.Pen.Mode := pmCopy;
Canvas.Rectangle(Origen.x, Origen.Y,x,y);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Pintando := False;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Button = mbLeft Then
Begin
Pintando := False;
Canvas.pen.style := pssolid;
Canvas.Rectangle(Origen.x, Origen.Y, ultimo.x, ultimo.Y);
Cuadrado(x,y);
end;
end;
El modo pmNotXor lo que hace básicamente es invertir el color que haya en ese punto, con sus detalles y demás.... pero básicamente eso.
Lo que necesitas es usar pmCopy que será el que te pinta encima de otras piezas.
Tendrás que adaptarlo, ya que al incluir sólo la unidad tuve que copiar y pegar a una aplicación de prueba.
Tiene algunos fallitos, pero eso ya te lo dejo a ti.