CarlosAlberto,
Cita:
|
Empezado por CarlosAlberto
...pero hasta ahora se siguen borrando. En el evento OnActive del Form coloque "form1.Canvas.Refresh" pero no solucionó el problema...
|
Revisa este código:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
Canvas.FillRect(self.Canvas.ClipRect);
Randomize;
for i := 1 to 100 do
begin
Canvas.Pen.Color := RGB(Random(256), Random(256), Random(256));
Canvas.LineTo(Random(ClientWidth), Random(ClientHeight));
end;
end;
El código anterior dibuja 100 lineas de forma aleatoria sobre el
Canvas de Form1, pero al
redimensionar Form1 o superponer otra ventana sobre este, las líneas son
Borradas en Runtime. Este código reproduce el problema de
Persistencia de la Imagen descrito en tu requerimiento.
Revisa este código:
Código Delphi
[-]
procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
Image1 : TImage;
begin
Image1 := TImage.Create(Self);
Image1.Parent := Self;
Image1.Height := ClientHeight;
Image1.Width := ClientWidth;
Image1.Canvas.FillRect(self.Canvas.ClipRect);
for i := 1 to 100 do
begin
Image1.Canvas.Pen.Color := RGB(Random(256), Random(256), Random(256));
Image1.Canvas.LineTo(Random(ClientWidth), Random(ClientHeight));
end;
end;
El código anterior dibuja 100 lineas de forma aleatoria,
pero con la diferencia de que no lo hace sobre el Canvas de Form1,
sino sobre el Canvas de un control TImage creado en Runtime con las dimensiones de Form1 el cual resuelve el problema de
Persistencia de la Imagen descrito anteriormente al
redimensionar Form1 o superponer otra ventana sobre este.
Otra opción es el uso del evento
OnPaint del formulario en cuestión descrito en mensajes previos.
Espero sea útil
Nelson.