FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
PolyPolyLine
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! |
#2
|
|||
|
|||
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: Código:
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;
__________________
Suerte .: Gydba :. |
|
|
|