Fórum codigo melhorado... #222093

24/03/2004

0

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]


Mahdak

Mahdak

Responder

Posts

24/03/2004

Dedi

tente assim:
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.


Responder

Gostei + 0

24/03/2004

Lucas Silva

Muito bom seu código,
Dedi..

Vou guardar ele aqui. :D :D


Responder

Gostei + 0

24/03/2004

Dedi

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.


Responder

Gostei + 0

24/03/2004

Mahdak

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;


Responder

Gostei + 0

25/03/2004

Nildo

Voce deve utilizar tambem o MoveTo. Aqui vai uma funcaozinha que eu fiz pra voce:

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


Responder

Gostei + 0

25/03/2004

Nildo

No caso do Image, troque [b:f3a27ec850]Form1 [/b:f3a27ec850]por [b:f3a27ec850]Image1[/b:f3a27ec850]


Responder

Gostei + 0

15/09/2004

Daemon

..se for fazer diretamente no Form, no evento OnCreate do form voce pode usar o seguinte código:
brush.style := bsCross;

e o delphi já vai fazer isso que voce quer.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar