Ir para conteúdo
Fórum Script Brasil
  • 0

Como Criar uma Seta?


Guest Luciana Guedes

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

  • 0
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 pronto

http://www.torry.net/pages.php?s=80

abraço

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...