Jump to content
Fórum Script Brasil
  • 0

Como Criar uma Seta?


Guest Luciana Guedes

Question

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 to post
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148691
    • Total Posts
      644531
×
×
  • Create New...