Fórum Image #152300

05/04/2003

0

Estou usando o image para desenhar, atraves de seu canvas, mas na hora em que esta modificando o desenho o image fica piscando. Como faço para que o image pare de piscar?

A linha de codigo do mousedown e esta:
var core, contx, conty, xpos, xneg, yposxpos, ynegxpos, yposxneg, ynegxneg, retornax, varrei, varrex, varrey, coratual, valor : integer;
begin
varx := x;
vary := y;

core := ColorToRGB(Image1.Canvas.Pixels[X,Y]);
if cor = 255 then
estado := 1;
IF cor = 16777215 Then
estado := 3;

If (core = 16777215) or (core = 255) Then
begin
conty := 0;
While conty < 5 do
begin
yposxpos := y;
ynegxpos := y;
yposxneg := y;
ynegxneg := y;
ynegxneg := (ynegxneg - conty);
yposxneg := (yposxneg + conty);
ynegxpos := (ynegxpos - conty);
yposxpos := (yposxpos + conty);
contx := 0;
While contx <= 2 do
begin
valor := ColorToRGB(Image1.Canvas.Pixels[x-contx,ynegxneg]);
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x-contx,ynegxneg] := cor;
valor := ColorToRGB(Image1.Canvas.Pixels[x-contx,yposxneg]);
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x-contx,yposxneg] := cor;
valor := (ColorToRGB(Image1.Canvas.Pixels[x+contx,ynegxpos]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x+contx,ynegxpos] := cor;
valor := (ColorToRGB(Image1.Canvas.Pixels[x+contx,yposxpos]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x+contx,yposxpos] := cor;
contx := contx + 1;
end;
conty := conty + 1;
end;

conty := 0;
While conty < 4 do
begin
yposxpos := y;
ynegxpos := y;
yposxneg := y;
ynegxneg := y;
ynegxneg := (ynegxneg - conty);
yposxneg := (yposxneg + conty);
ynegxpos := (ynegxpos - conty);
yposxpos := (yposxpos + conty);
valor := (ColorToRGB(Image1.Canvas.Pixels[x-3,ynegxneg]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x-3,ynegxneg] := cor;
valor := (ColorToRGB(Image1.Canvas.Pixels[x-3,yposxneg]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x-3,yposxneg] := cor;
valor := ColorToRGB(Image1.Canvas.Pixels[x+3,ynegxpos]);
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x+3,ynegxpos] := cor;
valor := (ColorToRGB(Image1.Canvas.Pixels[x+3,yposxpos]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x+3,yposxpos] := cor;
conty := conty + 1;
end;
conty := 0;
While conty < 3 do
begin
yposxpos := y;
ynegxpos := y;
yposxneg := y;
ynegxneg := y;
ynegxneg := (ynegxneg - conty);
yposxneg := (yposxneg + conty);
ynegxpos := (ynegxpos - conty);
yposxpos := (yposxpos + conty);
valor := (ColorToRGB(Image1.Canvas.Pixels[x-4,ynegxneg]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x-4,ynegxneg] := cor;
valor := (ColorToRGB(Image1.Canvas.Pixels[x-4,yposxneg]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x-4,yposxneg] := cor;
valor := (ColorToRGB(Image1.Canvas.Pixels[x+4,ynegxpos]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x+4,ynegxpos] := cor;
valor := (ColorToRGB(Image1.Canvas.Pixels[x+4,yposxpos]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x+4,yposxpos] := cor;
conty := conty + 1;
end;
conty := 0;
While conty < 2 do
begin
yposxpos := y;
ynegxpos := y;
yposxneg := y;
ynegxneg := y;
ynegxneg := (ynegxneg - conty);
yposxneg := (yposxneg + conty);
ynegxpos := (ynegxpos - conty);
yposxpos := (yposxpos + conty);
valor := (ColorToRGB(Image1.Canvas.Pixels[x-4,ynegxneg]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x-4,ynegxneg] := cor;
valor := (ColorToRGB(Image1.Canvas.Pixels[x-4,yposxneg]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x-4,yposxneg] := cor;
valor := (ColorToRGB(Image1.Canvas.Pixels[x+4,ynegxpos]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x+4,ynegxpos] := cor;
valor := (ColorToRGB(Image1.Canvas.Pixels[x+4,yposxpos]));
If (valor = 16777215) or (valor = 255) Then
Image1.Canvas.Pixels[x+4,yposxpos] := cor;
conty := conty + 1;
end;
end;

a do mouse move:
var contx, conty, xpos, xneg, yposxpos, ynegxpos, yposxneg, ynegxneg : integer;
begin
//label2.caption := IntToStr(ColorToRGB(Image1.Canvas.Pixels[X,Y]));
If (estado = 1) OR (ESTADO = 3) Then
BEGIN
If (ColorToRGB(Image1.Canvas.Pixels[X,Y]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[X,Y]) = 255) Then
begin
conty := 0;
While conty < 5 do
begin
yposxpos := y;
ynegxpos := y;
yposxneg := y;
ynegxneg := y;
ynegxneg := (ynegxneg - conty);
yposxneg := (yposxneg + conty);
ynegxpos := (ynegxpos - conty);
yposxpos := (yposxpos + conty);
contx := 0;
While contx <= 2 do
begin
If (ColorToRGB(Image1.Canvas.Pixels[x-contx,ynegxneg]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x-contx,ynegxneg]) = 255) Then
Image1.Canvas.Pixels[x-contx,ynegxneg] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x-contx,yposxneg]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x-contx,yposxneg]) = 255) Then
Image1.Canvas.Pixels[x-contx,yposxneg] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x+contx,ynegxpos]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x+contx,ynegxpos]) = 255) Then
Image1.Canvas.Pixels[x+contx,ynegxpos] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x+contx,yposxpos]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x+contx,yposxpos]) = 255) Then
Image1.Canvas.Pixels[x+contx,yposxpos] := cor;
contx := contx + 1;
end;
conty := conty + 1;
end;

conty := 0;
While conty < 4 do
begin
yposxpos := y;
ynegxpos := y;
yposxneg := y;
ynegxneg := y;
ynegxneg := (ynegxneg - conty);
yposxneg := (yposxneg + conty);
ynegxpos := (ynegxpos - conty);
yposxpos := (yposxpos + conty);
If (ColorToRGB(Image1.Canvas.Pixels[x-3,ynegxneg]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x-3,ynegxneg]) = 255) Then
Image1.Canvas.Pixels[x-3,ynegxneg] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x-3,yposxneg]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x-3,yposxneg]) = 255) Then
Image1.Canvas.Pixels[x-3,yposxneg] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x+3,ynegxpos]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x+3,ynegxpos]) = 255) Then
Image1.Canvas.Pixels[x+3,ynegxpos] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x+3,yposxpos]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x+3,yposxpos]) = 255) Then
Image1.Canvas.Pixels[x+3,yposxpos] := cor;
conty := conty + 1;
end;
conty := 0;
While conty < 3 do
begin
yposxpos := y;
ynegxpos := y;
yposxneg := y;
ynegxneg := y;
ynegxneg := (ynegxneg - conty);
yposxneg := (yposxneg + conty);
ynegxpos := (ynegxpos - conty);
yposxpos := (yposxpos + conty);
If (ColorToRGB(Image1.Canvas.Pixels[x-4,ynegxneg]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x-4,ynegxneg]) = 255) Then
Image1.Canvas.Pixels[x-4,ynegxneg] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x-4,yposxneg]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x-4,yposxneg]) = 255) Then
Image1.Canvas.Pixels[x-4,yposxneg] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x+4,ynegxpos]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x+4,ynegxpos]) = 255) Then
Image1.Canvas.Pixels[x+4,ynegxpos] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x+4,yposxpos]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x+4,yposxpos]) = 255) Then
Image1.Canvas.Pixels[x+4,yposxpos] := cor;
conty := conty + 1;
end;
conty := 0;
While conty < 2 do
begin
yposxpos := y;
ynegxpos := y;
yposxneg := y;
ynegxneg := y;
ynegxneg := (ynegxneg - conty);
yposxneg := (yposxneg + conty);
ynegxpos := (ynegxpos - conty);
yposxpos := (yposxpos + conty);
If (ColorToRGB(Image1.Canvas.Pixels[x-4,ynegxneg]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x-4,ynegxneg]) = 255) Then
Image1.Canvas.Pixels[x-4,ynegxneg] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x-4,yposxneg]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x-4,yposxneg]) = 255) Then
Image1.Canvas.Pixels[x-4,yposxneg] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x+4,ynegxpos]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x+4,ynegxpos]) = 255) Then
Image1.Canvas.Pixels[x+4,ynegxpos] := cor;
If (ColorToRGB(Image1.Canvas.Pixels[x+4,yposxpos]) = 16777215) or (ColorToRGB(Image1.Canvas.Pixels[x+4,yposxpos]) = 255) Then
Image1.Canvas.Pixels[x+4,yposxpos] := cor;
conty := conty + 1;
end;
end;
end;


Jldmbh

Jldmbh

Responder

Posts

05/04/2003

Iskatrek

em vez de usar o timage usa o tpaintbox


Responder

Gostei + 0

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

Aceitar