Показать сообщение отдельно

  #279  
Старый 08.03.2008, 19:07
ForNeVeR
Участник форума
Регистрация: 01.05.2006
Сообщений: 216
Провел на форуме:
287212

Репутация: 62
По умолчанию

ToniKapuchon, в общем, если я правильно понял, то получилось следущее: (создаём проект в Delphi, в нём две формы: Form1 с Edit1 (для ввода кол-ва шаров) и Button1 и Form2 для прорисовки шаров. Затем в Form1.Button1Click вводим следующее:

Код:
procedure TForm1.Button1Click(Sender: TObject);
const diameter = 40; // диаметр шаров
var i,n, // кол-во шаров
b:integer; // переменная для лучшего центрования надписи
a:string[2];

begin
  n := StrToInt(Edit1.Text);
  // настраиваем brush и pen
  form2.Canvas.Brush.Color:=clWhite;
  form2.Canvas.Pen.Color := clBlack;
  randomize;
  form2.Show;
  for i := 1 to n do
  begin
    form2.Canvas.Ellipse((i-1)*(diameter+5),0,(i-1)*(diameter+5)+diameter,diameter); // рисуем круги на расстоянии 5 пикселов друг от друга; в одну строку
    a:=inttostr(random(25));
    if length(a) = 2 then b:=12
    else b:=5;
    form2.Canvas.TextOut(diameter div 2 + (i-1)*(diameter+5) - b div 2, diameter div 2 - 4, a); // пишем на шаре надпись
  end;
end;
(Конечно, вероятно, всё это можно делать, обходясь и меньшим количеством действий и более технично, но этот код работает.)
Если собираешься рисовать не в своё окно, а в чужое, тут сложнее, однако сам алгоритм прорисовки (то, что тебя, как я понял, интересует) останется тем же.
 
Ответить с цитированием