Guest Luciana Guedes Postado Abril 1, 2008 Denunciar Share Postado Abril 1, 2008 Crio uma reta, clicando num primeiro ponto arrasto e ao soltar para formar uma reta é preciso que já saia fomrado uma seta.tipo: clino na tela, arrasto e ao soltar para formar a linha. já saia uma seta.como posso fazer isso!??????????????? Helpppppppppppppp-mevlw galera... em delphi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 1, 2008 Denunciar Share Postado Abril 1, 2008 tipo: clico na tela, arrasto e ao soltar para formar a linha. já saia uma seta.Dica de marioguedes{Desenha a Seta!} procedure DesenharSeta(OCor: TColor; OLargura: Integer; Origem, Destino: TPoint); const ANGULO = 15; PONTA = LADO; var AlphaRota, Alpha, Beta : Extended; vertice1, vertice2, vertice3 : TPoint; begin Self.Canvas.Pen.Color := OCor; Self.Canvas.Brush.Color := OCor; if (Destino.X >= Origem.X) then begin if (Destino.Y >= Origem.Y) then begin AlphaRota := Destino.X - Origem.X; if (AlphaRota <> 0) then Alpha := ArcTan((Destino.Y - Origem.Y) / AlphaRota) else Alpha := ArcTan(Destino.Y - Origem.Y); Beta := (ANGULO * (PI / 180)) / 2; vertice1.X := Destino.X - Round(Cos(Alpha + Beta)); vertice1.Y := Destino.Y - Round(Sin(Alpha - Beta)); vertice2.X := Round(vertice1.X - PONTA * Cos(Alpha + Beta)); vertice2.Y := Round(vertice1.Y - PONTA * Sin(Alpha + Beta)); vertice3.X := Round(vertice1.X - PONTA * Cos(Alpha - Beta)); vertice3.Y := Round(vertice1.Y - PONTA * Sin(Alpha - Beta)); Self.Canvas.Polygon([vertice1,vertice2,vertice3]); end else begin AlphaRota := Destino.Y - Origem.Y; if (AlphaRota <> 0) then Alpha := ArcTan((Destino.X - Origem.X) / AlphaRota) else Alpha := ArcTan(Destino.X - Origem.X); Beta := (ANGULO * (PI / 180)) / 2; vertice1.X := Destino.X - Round(Cos(Alpha + Beta)); vertice1.Y := Destino.Y - Round(Sin(Alpha - Beta)); vertice2.X := Round(vertice1.X + PONTA * Sin(Alpha + Beta)); vertice2.Y := Round(vertice1.Y + PONTA * Cos(Alpha + Beta)); vertice3.X := Round(vertice1.X + PONTA * Sin(Alpha - Beta)); vertice3.Y := Round(vertice1.Y + PONTA * Cos(Alpha - Beta)); Self.Canvas.Polygon([vertice1,vertice2,vertice3]); end; end else begin Alpha := ArcTan((Destino.Y - Origem.Y) / (Destino.X - Origem.X)); Beta := (ANGULO * (PI / 180)) / 2; vertice1.X := Destino.X - Round(Cos(Alpha + Beta)); vertice1.Y := Destino.Y - Round(Sin(Alpha - Beta)); vertice2.X := Round(vertice1.X + PONTA * Cos(Alpha + Beta)); vertice2.Y := Round(vertice1.Y + PONTA * Sin(Alpha + Beta)); vertice3.X := Round(vertice1.X + PONTA * Cos(Alpha - Beta)); vertice3.Y := Round(vertice1.Y + PONTA * Sin(Alpha - Beta)); Self.Canvas.Polygon([vertice1,vertice2,vertice3]); end; end;ou voce pode procurar um componente shape prontohttp://www.torry.net/pages.php?s=80abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Luciana Guedes
Crio uma reta, clicando num primeiro ponto arrasto e ao soltar para formar uma reta é preciso que já saia fomrado uma seta.
tipo: clino na tela, arrasto e ao soltar para formar a linha. já saia uma seta.
como posso fazer isso!??????????????? Helpppppppppppppp-me
vlw galera... em delphi
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.