codigo melhorado...
Estou querendo fazer uma rotina que insere pixels em todo o meu formulario(no componente image1), o codigo abaixo é o atual codigo que estou usando, mais gostaria de saber alguem ai sabe me dizer se tem como eu melhorar esse código para nao ficar tao grande e massante de escreve-lo :?:
Código
---------
procedure TPrincipal.InserirPixels1Click(Sender: TObject);
begin
Image1.Enabled := True;
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.Pen.Width := 3;
Image1.canvas.Pixels[0,10] := clblack;
Image1.canvas.Pixels[10,10] := clBlack;
Image1.canvas.Pixels[20,10] := clBlack;
Image1.canvas.Pixels[30,10] := clBlack;
Image1.canvas.Pixels[40,10] := clBlack;
Image1.canvas.Pixels[50,10] := clBlack;
Image1.canvas.Pixels[60,10] := clBlack;
Image1.canvas.Pixels[70,10] := clBlack;
Image1.canvas.Pixels[80,10] := clBlack;
Image1.canvas.Pixels[90,10] := clblack;
Image1.canvas.Pixels[100,10] := clBlack;
Image1.canvas.Pixels[110,10] := clBlack;
Image1.canvas.Pixels[120,10] := clBlack;
{...}
[b:e892543d9d][color=green:e892543d9d]Mensagem editada pelo moderador Nildo (Tinha muitas (mas muitas mesmo) informacoes repetidas)[/color:e892543d9d][/b:e892543d9d]
Código
---------
procedure TPrincipal.InserirPixels1Click(Sender: TObject);
begin
Image1.Enabled := True;
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.Pen.Width := 3;
Image1.canvas.Pixels[0,10] := clblack;
Image1.canvas.Pixels[10,10] := clBlack;
Image1.canvas.Pixels[20,10] := clBlack;
Image1.canvas.Pixels[30,10] := clBlack;
Image1.canvas.Pixels[40,10] := clBlack;
Image1.canvas.Pixels[50,10] := clBlack;
Image1.canvas.Pixels[60,10] := clBlack;
Image1.canvas.Pixels[70,10] := clBlack;
Image1.canvas.Pixels[80,10] := clBlack;
Image1.canvas.Pixels[90,10] := clblack;
Image1.canvas.Pixels[100,10] := clBlack;
Image1.canvas.Pixels[110,10] := clBlack;
Image1.canvas.Pixels[120,10] := clBlack;
{...}
[b:e892543d9d][color=green:e892543d9d]Mensagem editada pelo moderador Nildo (Tinha muitas (mas muitas mesmo) informacoes repetidas)[/color:e892543d9d][/b:e892543d9d]
Mahdak
Curtidas 0
Respostas
Dedi
24/03/2004
tente assim:
Dedi.
var i,l,xp,yp:integer; begin Image1.Enabled := True; Image1.Canvas.Brush.Color := clWhite; Image1.Canvas.Pen.Width := 3; for i:=0 to 79 do begin yp:=yp+10; xp:=0; for l:= 0 to 59 do begin xp:=xp + 10; Image1.canvas.Pixels[xp,yp] := clblack; end; end;
Dedi.
GOSTEI 0
Lucas Silva
24/03/2004
Muito bom seu código,
Dedi..
Vou guardar ele aqui. :D :D
Dedi..
Vou guardar ele aqui. :D :D
GOSTEI 0
Dedi
24/03/2004
ok,mas faça uma pequena correção antes ....
..
...
.....
[color=red:e610ff7de4]yp:=0;[/color:e610ff7de4]
for i:=0 to 79 do begin
yp:=yp+10;
xp:=0;
.....
...
..
Dedi.
..
...
.....
[color=red:e610ff7de4]yp:=0;[/color:e610ff7de4]
for i:=0 to 79 do begin
yp:=yp+10;
xp:=0;
.....
...
..
Dedi.
GOSTEI 0
Mahdak
24/03/2004
sobe
-----
ok deu certo, mas agora, pintou outro probleminha...
agora ao inves de inserir pixels estou querendo milimetrar o Image1.
inseri o codigo abaixo, mas nao deu certo, pois ´LineTo´, faz comque as linhas fiquem grudadas umas nas outras. Preciso criar a rotina que as linhas verticais cruzem com as horizontais em todo o formulario do tipo jogo da velha...
codigo que nao deu certo:
procedure TPrincipal.MilimetrarPapel1Click(Sender: TObject);
var i,l,xp,yp:integer;
begin
Image1.Enabled := True;
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.Pen.Width := 1;
yp:=0;
for i:=0 to 79 do begin
yp:=yp+10;
xp:=0;
for l:= 0 to 79 do begin
xp:=xp + 10;
Image1.canvas.LineTo(xp,yp);
end;
end;
end;
-----
ok deu certo, mas agora, pintou outro probleminha...
agora ao inves de inserir pixels estou querendo milimetrar o Image1.
inseri o codigo abaixo, mas nao deu certo, pois ´LineTo´, faz comque as linhas fiquem grudadas umas nas outras. Preciso criar a rotina que as linhas verticais cruzem com as horizontais em todo o formulario do tipo jogo da velha...
codigo que nao deu certo:
procedure TPrincipal.MilimetrarPapel1Click(Sender: TObject);
var i,l,xp,yp:integer;
begin
Image1.Enabled := True;
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.Pen.Width := 1;
yp:=0;
for i:=0 to 79 do begin
yp:=yp+10;
xp:=0;
for l:= 0 to 79 do begin
xp:=xp + 10;
Image1.canvas.LineTo(xp,yp);
end;
end;
end;
GOSTEI 0
Nildo
24/03/2004
Voce deve utilizar tambem o MoveTo. Aqui vai uma funcaozinha que eu fiz pra voce:
Voce pode alterar o tamanho dos quadrados alterando o valor de Tamanho (veja nas Consts).
Qualquer coisa pergunte (aqui no topico)
Teh + :D
const Tamanho = 10; var X,Y: Integer; begin X := 0; // Controle de linhas horizontais Y := 0; // Controle de linhas verticais while X <= Form1.Width do begin Form1.Canvas.MoveTo( X, 0 ); Form1.Canvas.LineTo( X, Form1.Height ); Inc( x, Tamanho ); end; while Y <= Form1.height do begin Form1.Canvas.MoveTo( 0, Y ); Form1.Canvas.LineTo( Form1.Width, Y ); Inc( Y, Tamanho ); end; end;
Voce pode alterar o tamanho dos quadrados alterando o valor de Tamanho (veja nas Consts).
Qualquer coisa pergunte (aqui no topico)
Teh + :D
GOSTEI 0
Nildo
24/03/2004
No caso do Image, troque [b:f3a27ec850]Form1 [/b:f3a27ec850]por [b:f3a27ec850]Image1[/b:f3a27ec850]
GOSTEI 0
Daemon
24/03/2004
..se for fazer diretamente no Form, no evento OnCreate do form voce pode usar o seguinte código:
e o delphi já vai fazer isso que voce quer.
brush.style := bsCross;
e o delphi já vai fazer isso que voce quer.
GOSTEI 0