PDA

Ver la Versión Completa : dibujar un rectangulo


ioco
25-04-2010, 17:49:42
Estoy aquí con mi nuevo amigo canvas intentando llevarnos bien pero no hay manera...

Tengo:

procedure TForm1.Button1Click(Sender: TObject);
var
x1,x2,y1,y2: integer;
begin
{ punto (x1,y1) => centro del segundo cuadrante de la ventana }
x1:=Form1.Left+Form1.Width div 4;
y1:=Form1.Top+Form1.Height div 4;
{ punto (x2,y2) => centro del cuarto cuadrante de la ventana}
x2:=3*(Form1.left+Form1.Width) div 4;
y2:=3*(Form1.Top+Form1.Height) div 4;
{ dibujado del rectángulo }
canvas.Rectangle(x1,y1,x2,y2);
end;


La idea es que dibuje un rectángulo centrado en el form de la mitad del tamaño del mismo y cuando la ventana está maximizada lo hace bien, pero cuando no lo está aunque el tamaño parece el correcto (más pequeño debido a que la ventana también es más pequeña) la posición no lo es ya que no está centrado.

¿Creen que estoy haciendo algo mal? :confused:

escafandra
25-04-2010, 18:02:56
Prueba a simplificarlo así:

procedure TForm1.Button1Click(Sender: TObject);
var
Rect: TRect;
begin
Rect:= ClientRect;
InflateRect(Rect, -Width div 4, -Height div 4);
Canvas.Rectangle(Rect);
end;



Saludos.

ioco
25-04-2010, 18:10:43
Gracias por la sugerencia, me funciona tal como quería y es más simple. Ahora mismo me pongo con la help a ver qué es lo que hace :)