Si dibujas sobre una ventana, te tienes que preocupar por redibujar cada vez que esta ventana lo requiera, por ejemplo sobreescribiendo el mensaje WM_PAINT:
Código Delphi
[-]
type
TForm1 = class(TForm)
private
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
public
end;
...
implementation
procedure TForm1.WMPaint(var Message: TWMPaint);
begin
Canvas.Rectangle(Rect(10, 10, 100, 100));
end;
Saludos!