PDA

Ver la Versión Completa : sobre las lineas


dridly
27-02-2004, 12:51:47
Hola! Tengo un problema. Intento hacer un programa que dibuje lineas (parece sencillo). Con el botón izquierdo va dibujando las líneas, y con el derecho deja de dibujar el trazado actual.
Lo voy almacenando todo en una array de Tpoints. Para dibujar utilizo el PolyPolyLine, pero cada vez que quiero que me dibuje no me hace nada.
El código es el siguiente:

procedure TFrmDibujo.ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then//si pulsas el botón izquierdo
begin
SetLength(Element, i+1);//redimensiona la array de coordenadas
if Element[0].x=0 then
begin
Element[0].x:=X;Element[0].y:=Y;
end else
begin
Element[i].x:=X;Element[i].y:=Y;
end;
Inc(i);
end
else //SI PULSAS EL BOTÓN DERECHO
begin
SetLength(NumElements, j+1);
NumElements[j]:=i;
Inc(j);
PolyPolyline(Image.Canvas.Handle, Element, NumElements, j);
end;
end;


Cuando pulsas el botón derecho le digo que dibuje, pero no lo hace. Alguien me puede decir a que es debido???
Gracias!

Gydba
27-02-2004, 14:01:13
Nunca utilicé la función en Delphi, pero lo primero que se me ocurriría sería probar el canvas del form para ver si dibuja.
Por algún lugar encontré este código que aunque no lo probé te puede llegar a servir o dar una idea:

procedure TForm1.FormPaint(Sender: TObject);
const
Points: Array [0..10] of TPoint =
((x:10;y:50),(x:50;y:10),(x:100;y:60),(x:150;y:50),
(x:10;y:100),(x:100;y:50),(x:20; y:50 ),
(x:10;y:200),(x:20;y:180),(x:30;y:220),(x:40;y:180)
);
Segments : Array [0..2] of DWORD = (4,3,4);
begin
Canvas.Pen.Color :=clBlue;
Canvas.Pen.Style := psSolid;
Canvas.Pen.Width := 1;
PolyPolyline( Canvas.Handle, Points, Segments, 3 );
end;

dridly
01-03-2004, 10:05:54
El programa que me pasastes funciona perfectamente, pero no entiewndo aún porque no me va a mi. Me he fijado que en todos los ejemplos la función PolyPolyLine está en el FormPaint (aunque dibuja líneas por defecto y yo quiero que las dibuje en tiempo de ejecución). A ver si alguien me puede ayudar!