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.
Escrito 13 diciembre 2008 - 09:18
Escrito 13 diciembre 2008 - 09:44
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.
Escrito 13 diciembre 2008 - 09:55
Escrito 13 diciembre 2008 - 10:02
Escrito 13 diciembre 2008 - 10:08
Escrito 13 diciembre 2008 - 10:09
Escrito 13 diciembre 2008 - 10:37
form1.Canvas.Polyline([point(20,20), point(80,20), point(20,80), point(20,20)]);
Escrito 13 diciembre 2008 - 10:44
Escrito 13 diciembre 2008 - 10:53
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;
Escrito 14 diciembre 2008 - 07:55
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;
Escrito 14 diciembre 2008 - 10:05
Escrito 26 marzo 2009 - 12:39
Escrito 26 marzo 2009 - 12:44
¿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;
Escrito 26 marzo 2009 - 12:49
¿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
Escrito 26 marzo 2009 - 01:08
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;
Escrito 26 marzo 2009 - 01:37
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;
Escrito 26 marzo 2009 - 04:48
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;
Escrito 26 marzo 2009 - 05:08
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));