Olá pessoal! Este é meu primeiro artigo aqui para o site e nele veremos como usar Canvas. Quando trabalhamos com Canvas, utilizamos coordenadas, logo, precisamos lembrar que:
X = Horizontal;
Y = Vertical
Veja agora os principais comandos possíveis com o Canvas. Vamos começar
com uma linha:
canvas.moveto(8, 8) // Move para x: 8 e y: 8
canvas.lineto(10, 8) // Faz a linha com 10 de x e 8 de y
Como alterar a cor de uma linha:
canvas.pen.color := clred; // clRed é vermelho
Como fazer um circulo:
canvas.Ellipse(8, 8, 50, 50);
// O X1 é onde vai ficar na horizontal, o Y1 é onde vai ficar,
// O X2 é o tamanho x do circulo, o Y2 é o tamanho y do circulo
Agora um retangulo:
canvas.Rectangle(8, 8, 50, 50); // O Mesmo procedimento do circulo
Agora um pixel:
canvas.pixel[8, 8] := clred; // o pixel (8,8) vai ficar vermelho
Para mudar a cor que fica dentro de um circulo ou retângulo:
canvas.brush.color := clred;
Agora que já vimos os principais comandos, que tal fazer o icone do media-player? Basta
copiar
a procedure a seguir:
procedure MediaPlayerIconCanvas(DrawCanvas: TCanvas);
var
PenColorAtual : TColor;
BrushColorAtual : TColor;
begin
PenColorAtual := DrawCanvas.Pen.Color;
BrushColorAtual := DrawCanvas.Brush.Color;
// Vamos Desenhar
DrawCanvas.Ellipse(2, 2, 31, 31);
DrawCanvas.Brush.Color := clWhite;
DrawCanvas.Ellipse(8, 8, 25, 25);
DrawCanvas.Brush.Color := BrushColorAtual;
DrawCanvas.MoveTo(14, 11);
DrawCanvas.LineTo(14, 21);
DrawCanvas.LineTo(19, 16);
DrawCanvas.LineTo(14, 11);
DrawCanvas.MoveTo(16, 2);
DrawCanvas.LineTo(16, 9);
DrawCanvas.MoveTo(2, 16);
DrawCanvas.LineTo(9, 16);
DrawCanvas.MoveTo(16, 24);
DrawCanvas.LineTo(16, 30);
DrawCanvas.MoveTo(24, 16);
DrawCanvas.LineTo(30, 16);
// Vamos Pintar de Preto !
DrawCanvas.MoveTo(15, 12);
DrawCanvas.LineTo(15, 20);
DrawCanvas.MoveTo(16, 13);
DrawCanvas.LineTo(16, 19);
DrawCanvas.MoveTo(17, 14);
DrawCanvas.LineTo(17, 18);
DrawCanvas.Pixels[18, 16] := clWhite;
// Vamos Pintar de Vermelho !
DrawCanvas.Pen.Color := clRed;
DrawCanvas.MoveTo(7, 15);
DrawCanvas.LineTo(2, 15);
DrawCanvas.MoveTo(3, 14);
DrawCanvas.LineTo(8, 14);
DrawCanvas.MoveTo(8, 13);
DrawCanvas.LineTo(3, 13);
DrawCanvas.MoveTo(4, 12);
DrawCanvas.LineTo(9, 12);
DrawCanvas.MoveTo(9, 11);
DrawCanvas.LineTo(3, 11);
DrawCanvas.MoveTo(10,10);
DrawCanvas.LineTo(4, 10);
DrawCanvas.MoveTo(11, 9);
DrawCanvas.LineTo(4, 9);
DrawCanvas.MoveTo(13, 8);
DrawCanvas.LineTo(5, 8);
DrawCanvas.MoveTo(15, 7);
DrawCanvas.LineTo(6, 7);
DrawCanvas.MoveTo(8, 6);
DrawCanvas.LineTo(16, 6);
DrawCanvas.MoveTo(9 , 5);
DrawCanvas.LineTo(16, 5);
DrawCanvas.MoveTo(11, 4);
DrawCanvas.LineTo(16, 4);
DrawCanvas.MoveTo(14, 3);
DrawCanvas.LineTo(16, 3);
// Vamos Pintar de Verde !
DrawCanvas.Pen.Color := clGreen;
DrawCanvas.MoveTo(25,15);
DrawCanvas.LineTo(30,15);
DrawCanvas.MoveTo(25,14);
DrawCanvas.LineTo(30,14);
DrawCanvas.MoveTo(24,13);
DrawCanvas.LineTo(29,13);
DrawCanvas.MoveTo(24,12);
DrawCanvas.LineTo(29,12);
DrawCanvas.MoveTo(23,11);
DrawCanvas.LineTo(29,11);
DrawCanvas.MoveTo(22,10);
DrawCanvas.LineTo(29,10);
DrawCanvas.MoveTo(21, 9);
DrawCanvas.LineTo(28, 9);
DrawCanvas.MoveTo(19, 8);
DrawCanvas.LineTo(27, 8);
DrawCanvas.MoveTo(17, 7);
DrawCanvas.LineTo(27, 7);
DrawCanvas.MoveTo(17, 6);
DrawCanvas.LineTo(26, 6);
DrawCanvas.MoveTo(17, 5);
DrawCanvas.LineTo(24, 5);
DrawCanvas.MoveTo(17, 4);
DrawCanvas.LineTo(23, 4);
DrawCanvas.MoveTo(17, 3);
DrawCanvas.LineTo(19, 3);
// Vamos Pintar de Azul !
DrawCanvas.Pen.Color := clBlue;
DrawCanvas.MoveTo(3, 17);
DrawCanvas.LineTo(8, 17);
DrawCanvas.MoveTo(3, 18);
DrawCanvas.LineTo(8, 18);
DrawCanvas.MoveTo(3, 19);
DrawCanvas.LineTo(9, 19);
DrawCanvas.MoveTo(4, 20);
DrawCanvas.LineTo(9, 20);
DrawCanvas.MoveTo(4, 21);
DrawCanvas.LineTo(10,21);
DrawCanvas.MoveTo(4, 22);
DrawCanvas.LineTo(11,22);
DrawCanvas.MoveTo(5, 23);
DrawCanvas.LineTo(12,23);
DrawCanvas.MoveTo(6, 24);
DrawCanvas.LineTo(14,24);
DrawCanvas.MoveTo(7, 25);
DrawCanvas.LineTo(16,25);
DrawCanvas.MoveTo(8, 26);
DrawCanvas.LineTo(16,26);
DrawCanvas.MoveTo(9, 27);
DrawCanvas.LineTo(16,27);
DrawCanvas.MoveTo(10,28);
DrawCanvas.LineTo(16,28);
DrawCanvas.MoveTo(14,29);
DrawCanvas.LineTo(16,29);
// Vamos Pintar de Amarelo !
DrawCanvas.Pen.Color := clYellow;
DrawCanvas.MoveTo(25,17);
DrawCanvas.LineTo(30,17);
DrawCanvas.MoveTo(25,18);
DrawCanvas.LineTo(30,18);
DrawCanvas.MoveTo(24,19);
DrawCanvas.LineTo(29,19);
DrawCanvas.MoveTo(24,20);
DrawCanvas.LineTo(29,20);
DrawCanvas.MoveTo(23,21);
DrawCanvas.LineTo(29,21);
DrawCanvas.MoveTo(22,22);
DrawCanvas.LineTo(29,22);
DrawCanvas.MoveTo(22,23);
DrawCanvas.LineTo(28,23);
DrawCanvas.MoveTo(19,24);
DrawCanvas.LineTo(27,24);
DrawCanvas.MoveTo(17,25);
DrawCanvas.LineTo(27,25);
DrawCanvas.MoveTo(17,26);
DrawCanvas.LineTo(25,26);
DrawCanvas.MoveTo(17,27);
DrawCanvas.LineTo(24,27);
DrawCanvas.MoveTo(17,28);
DrawCanvas.LineTo(22,28);
DrawCanvas.MoveTo(17,29);
DrawCanvas.LineTo(19,29);
// Vamos Fazer a Luz !
DrawCanvas.Pixels[8, 8] := clwhite;
DrawCanvas.Pixels[7, 9] := clwhite;
DrawCanvas.Pixels[7,10] := clwhite;
DrawCanvas.Pen.Color := PenColorAtual;
end;
Agora, pra testar, adicione um ListBox ao formulário e acrescente a
ele 1 item qualquer.
Em seguida, altere a sua propriedade Style para lbOwnerDrawVariable.
Agora vá ao evento onDrawItem do ListBox e faça:
MediaPlayerIconCanvas(ListBox1.Canvas);
Rode e teste! Agora basta usar a sua criatividade.
Bom, espero que tenham aprendido alguma coisa.
Abraços!
Por: Fer22.3
Contato:
fer.gatinho@hotmail.com
|