GARANTIR DESCONTO

Fórum Desenhar círculos aleatórios sem se sobreporem #356467

03/04/2008

0

olá pessoal,

estou precisando desenhar círculos num form sem que um fique sobre um já existente,
por exemplo;
eu executo a rotina para desenhar 30 círculos, eles tem que ficarem todos 100¬ visíveis,
depois executo a rotina de novo com outra quantidade, ela tem que apagar os existentes e criar os novos em novas posições,

o que consegui até o momento foi a rotina abaixo, mas as vezes uns ficam sobre os outros,

agradeço muitíssimo que poder me ajudar,

abraços,

Ricardo Coelho,

rotina:

var
RAIZ_DE_DOIS = 1.4142135;

procedure TForm1.Button3Click(Sender: TObject);
var
Rect: TRect;
i,j,y,x, raio, posicao01, posicao02, qnt,a,b : integer;
begin

qnt := StrToInt(edit3.Text);
j:=1 ;
raio := 30;

Randomize;
for i:=1 to qnt do
begin
posicao01 := Random(image1.Width);
posicao02 := Random(image1.Height);

while posicao01 <20 do posicao01 := Random(image1.Width);
while posicao02 <20 do posicao02 := Random(image1.Height);

Rect.Left := posicao01 - Round(Raio/RAIZ_DE_DOIS);
Rect.Top := posicao02 - Round(Raio/RAIZ_DE_DOIS);
Rect.Right := posicao01 + Round(Raio/RAIZ_DE_DOIS);
Rect.Bottom := posicao02 + Round(Raio/RAIZ_DE_DOIS);

image1.Canvas.Brush.Color := clRed;
image1.Canvas.Ellipse(rect); // desenha o círculo
end;
end;


Rickcoelho

Rickcoelho

Responder

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

Aceitar