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)
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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
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
os pontos acima seria equivalente a essa logica
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
para desenhar o nosso poligono basta usar o metodo Polygon e passar como argumento para ele a array com as posição
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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)
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
tambem podemos pintar o lado de dentro com brush.color
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
outro exemplo, quem curte jogos de rpg certamente conhece esse simbolo *-----* (fiz usando 3 triangulos é possivel fazer usando apenas com um poligono)
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
bom galera na proxima parte vamos carrega uma imagem dinamicamente e desenhar pelo canvas ^^
by kõdo no kami
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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;
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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)
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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;
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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;
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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;
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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;
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
bom galera na proxima parte vamos carrega uma imagem dinamicamente e desenhar pelo canvas ^^
by kõdo no kami