Me gustaria que algun maestro nos pusiera por aca un ejemplito de como hacer un triangulo usando canvas y que nos explique como ponerle color.

Un Saludo.
PD:Seria buena idea, poder contar con un pequeño tutorial al respecto por aca.
Posted 13 December 2008 - 09:18 AM
Posted 13 December 2008 - 09:44 AM
el canvas es una pizarra de dibujo, pero para dibujar debes utilizar comandos, para el triangulo yo utilizaria el polyline, donde se dibuja una linea en los puntos indicados, por ejemplo mira esta linea:
form1.Canvas.Polyline([point(10,10), point(20,30), point(30,30), point(10,10)]);
Turbo C++
Version 1.01
Copyright © 1990 by
Borland International, Inc.
Posted 13 December 2008 - 09:55 AM
Posted 13 December 2008 - 10:02 AM
Posted 13 December 2008 - 10:08 AM
Posted 13 December 2008 - 10:09 AM
Posted 13 December 2008 - 10:37 AM
form1.Canvas.Polyline([point(20,20), point(80,20), point(20,80), point(20,20)]);
Posted 13 December 2008 - 10:44 AM
Posted 13 December 2008 - 10:53 AM
a ver si me puedo dar a entender:
Dentro de cada point tienes dos valores, uno es el eje x y el otro es el eje y, asi cada punto corresponde a un punto especifico en la pantalla donde Y es la coordenada vertical X la coordenada horizontal.
Imaginate que el form es un eje de coordenadas, y trata de ubicar los puntos en el, un triangulo tiene 4 puntos porque el primero y el ultimo son los mismos, inicio y fin.
procedure TForm1.Button1Click(Sender: TObject); var Puntos: array of TPoint; begin with Canvas do begin Pen.Color := clYellow; Pen.Width := 3; Brush.Color := clGreen; SetLength( Puntos, 3 ); Puntos[0].x := 150; Puntos[0].y := 150; Puntos[1].x := 250; Puntos[1].y := 200; Puntos[2].x := 150; Puntos[2].y := 200; Polygon( Puntos ); end; end;
Posted 14 December 2008 - 07:55 AM
Con el ejemplo que entendiste, vas a entender mejor el asunto.
procedure TForm1.Button2Click(Sender: TObject); begin with Canvas do begin Pen.Color := clYellow; Pen.Width := 3; Brush.Color := clGreen; Polygon([point(150,150), point(250,200), point(150,200)]); //Omiti el arreglo de TPoints y los he acomodado en la funcion Polygon... end; end;
Posted 14 December 2008 - 10:05 AM
Posted 26 March 2009 - 12:39 PM
Posted 26 March 2009 - 12:44 PM
¿Como se le haría para dibujar un triangulo equilatero y que cuando minimizes o le pongas algo encima al triangulo no se borre?
procedure TForm1.FormPaint(Sender: TObject); begin //Dibujar Triangulo equilatero end;
Posted 26 March 2009 - 12:49 PM
¿Como se le haría para dibujar un triangulo equilatero y que cuando minimizes o le pongas algo encima al triangulo no se borre?
Hola amigo
Utilizando el evento OnPaint de la forma
delphi
procedure TForm1.FormPaint(Sender: TObject); begin //Dibujar Triangulo equilatero end;
Salud OS
Posted 26 March 2009 - 01:08 PM
procedure TForm1.FormPaint(Sender: TObject); var Puntos: array of TPoint; begin with Canvas do begin Pen.Color := clBlue; Brush.Color := clBlue; SetLength( Puntos, 3 ); Puntos[0].x := 10; Puntos[0].y := 220; Puntos[1].x := 100; Puntos[1].y := 220; Puntos[2].x := 50; Puntos[2].y := 150; Polygon( Puntos ); end; end;
Posted 26 March 2009 - 01:37 PM
procedure TForm1.FormPaint(Sender: TObject); function distancia(p1,p2: TPoint):double; begin Result:= sqrt(sqr(p2.x-p1.x)+sqr(p2.y-p1.y)) //http://es.wikipedia.org/wiki/Distancia end; var Puntos: array of TPoint; begin with Canvas do begin Pen.Color := clBlue; Brush.Color := clBlue; SetLength( Puntos, 3 ); Puntos[0].x := 10; Puntos[0].y := 220; Puntos[1].x := 100; Puntos[1].y := 220; Puntos[2].x := 50; Puntos[2].y := 150; Label1.Caption:=FloatToStr(distancia(Puntos[0],Puntos[1])); Label2.Caption:=FloatToStr(distancia(Puntos[1],Puntos[2])); Label3.Caption:=FloatToStr(distancia(Puntos[2],Puntos[0])); Polygon( Puntos ); end; end;
Posted 26 March 2009 - 04:48 PM
procedure TForm1.FormPaint(Sender: TObject); function distancia(p1,p2: TPoint):double; begin Result:= sqrt(sqr(p2.x-p1.x)+sqr(p2.y-p1.y)) //http://es.wikipedia.org/wiki/Distancia end; const lado = 150; var Puntos: array of TPoint; begin with Canvas do begin Pen.Color := clBlue; Brush.Color := clBlue; SetLength( Puntos, 3 ); Puntos[0].x := 0; Puntos[0].y := 0; Puntos[1].x := lado; Puntos[1].y := 0; Puntos[2].x := Round(lado/2); Puntos[2].y := Round((lado/2)*sqrt(3)); Label1.Caption:=FloatToStr(distancia(Puntos[0],Puntos[1])); Label2.Caption:=FloatToStr(distancia(Puntos[1],Puntos[2])); Label3.Caption:=FloatToStr(distancia(Puntos[2],Puntos[0])); Polygon( Puntos ); end; end;
Posted 26 March 2009 - 05:08 PM
Puntos[0].x := 0; Puntos[0].y := 260; Puntos[1].x := lado; Puntos[1].y := 260; Puntos[2].x := Round(lado/2); Puntos[2].y := Round((lado/2)*sqrt(3));