seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^

Você não está conectado. Conecte-se ou registre-se

 » Programação Desktop » Pascal / Delphi » [tutorial] desenhando com canvas (delphi) - 5º parte

[tutorial] desenhando com canvas (delphi) - 5º parte

Ir em baixo  Mensagem [Página 1 de 1]

Kodo no Kami

avatar
master
master
e ae galera essa é a 5º parte do tutorial de canvas em delphi, na parte anterior vimos como manipular um unico pixel nessa parte vamos aprender desenhar um polígono e ver algumas coisas a mais que eu ia citar no tuto anterior devido alguns problemas no monitor nem deu (monitor ta meio sadomosoquista so ta funcionando se der uns tapinhas nele '-' ), bom continuando o tutorial um poligono é uma figura com varios lados ligados exemplo um quadrado é um poligono de 4 lados, um triangulo é um de 3 lados, para a gente desenhar um poligono com canvas, temos que criar uma array do tipo TPoint para especificar a quantidade de lados e a posição dos lados, nessa array deve ter a quantidade de pontos, a cada novo ponto ele vai desenhar uma linha do ultimo ponto ate o novo ponto, e o ultimo ponto de todos é ligado ao primeiro ponto fechando caso nao exista outro ponto (por isso deve especificar a quantidade de alocação exata para quantidade de lados se nao vai deformar o poligono com novos pontos zerados)

[Você precisa estar registrado e conectado para ver esta imagem.]

para fazer isso no delphi primeiro temos que declarar a array do tipo TPoint e alocar a quantidade extata de pontos que sera usado

Código:
procedure TForm1.FormPaint(Sender: TObject);
var kodo: array[1 .. 4] of TPoint;
begin
end;

depois atribuir em cada alocação a posição dos pontos, para atribuir temos que usar a função Point e passamos como argumento a posição de X e Y da onde sera o ponto

Código:
procedure TForm1.FormPaint(Sender: TObject);
var kodo: array[1 .. 4] of TPoint;
begin
  kodo[1] := Point(100,100);
  kodo[2] := Point(200,100);
  kodo[3] := Point(200,200);
  kodo[4] := Point(100,200);
end;

os pontos acima seria equivalente a essa logica

[Você precisa estar registrado e conectado para ver esta imagem.]

para desenhar o nosso poligono basta usar o metodo Polygon e passar como argumento para ele a array com as posição

Código:
procedure TForm1.FormPaint(Sender: TObject);
var kodo: array[1 .. 4] of TPoint;
begin
  kodo[1] := Point(100,100);
  kodo[2] := Point(200,100);
  kodo[3] := Point(200,200);
  kodo[4] := Point(100,200);
  Form1.Canvas.Polyline(kodo);
end;

[Você precisa estar registrado e conectado para ver esta imagem.]

o  bom de desenhar dessa forma que nao existe uma forma certa de começar eu poderia desenhar do ponto A para o ponto B, ou do A para D, ou do D para o A ou para C, do C para B ou D, so nao daria nessa logica do A para C (isso pq nao sao interligados)

[Você precisa estar registrado e conectado para ver esta imagem.]

vamos desenhar um triangula agora, oq sabemos do triangulo é que ele te 3 lados, entao vamos imaginar que o ponto 1 e 2 seja uma linha na horizontal e o ponto 3 seja uma linha na metade da entre 1 e 2 na horizontal e pouco para cima na vertical

Código:
procedure TForm1.FormPaint(Sender: TObject);
var kodo: array[1 .. 3] of TPoint;
begin
  kodo[1] := Point(100,100);
  kodo[2] := Point(200,100);
  kodo[3] := Point(150,50);
  Form1.Canvas.Polygon(kodo);
end;

[Você precisa estar registrado e conectado para ver esta imagem.]

tambem podemos pintar o lado de dentro com brush.color

Código:
procedure TForm1.FormPaint(Sender: TObject);
var kodo: array[1 .. 3] of TPoint;
begin

  kodo[1] := Point(100,100);
  kodo[2] := Point(200,100);
  kodo[3] := Point(150,50);
  Form1.Canvas.Brush.Color := clYellow;
  Form1.Canvas.Polygon(kodo);
end;

[Você precisa estar registrado e conectado para ver esta imagem.]

outro exemplo, quem curte jogos de rpg certamente conhece esse simbolo *-----* (fiz usando 3 triangulos é possivel fazer usando apenas com um poligono)

Código:
procedure TForm1.FormPaint(Sender: TObject);
var kodo, kami, fts: array[1 .. 3] of TPoint;
begin

  kodo[1] := Point(100,100);
  kodo[2] := Point(200,100);
  kodo[3] := Point(150,50);

  kami[1] := Point(50,150);
  kami[2] := Point(150,150);
  kami[3] := Point(100,100);

  fts[1] := Point(150,150);
  fts[2] := Point(250,150);
  fts[3] := Point(200,100);

  Form1.Canvas.Brush.Color := clYellow;
  Form1.Canvas.Polygon(kodo);
  Form1.Canvas.Polygon(kami);
  Form1.Canvas.Polygon(fts);
end;

[Você precisa estar registrado e conectado para ver esta imagem.]

para terminar essa parte do tutorial podemos usar o metodo polyline, diferente do polygon esse nao junta o ponto final com o primeiro

Código:
procedure TForm1.FormPaint(Sender: TObject);
var kodo: array[1 .. 3] of TPoint;
begin
  kodo[1] := Point(100,100);
  kodo[2] := Point(200,100);
  kodo[3] := Point(150,50);
  Form1.Canvas.Polyline(kodo);
end;

[Você precisa estar registrado e conectado para ver esta imagem.]

bom galera na proxima parte vamos carrega uma imagem dinamicamente e desenhar pelo canvas ^^

by kõdo no kami


_________________ASSINATURA_________________
[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]

Contato:
Spoiler:

Contato:
Facebook: [Você precisa estar registrado e conectado para ver este link.]
Skype: hackerfts315
http://endoffile.umforum.net

Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum