Показать сообщение отдельно
  #2  
Старый 24.05.2014, 15:22
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от NaN43
Подскажите как правильно организовать цикл, чтобы в компоненте TImage был нарисован такой рисунок, и все квадраты были пронумерованы как указанно на рисунке.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  bmp: TBitmap;
  can: TCanvas;
  i, X, Y: Integer;
  R: TRect;
  s: String;
begin
  bmp := Image1.Picture.Bitmap;
  bmp.Width := 357;
  bmp.Height := 61;
  can := bmp.Canvas;
  can.Brush.Color := clWhite;
  can.FillRect(Rect(0, 0, bmp.Width, bmp.Height));

  can.Pen.Color := clGreen;
  for i := 0 to 19 do
  begin
    X := 3 + 30 * (i mod 2) + 76 * (i div 4) - 3 * (i div 8);
    Y := 4 + 30 * ((i div 2) mod 2);
    R := Rect(X, Y, X + 20, Y + 20);
    can.Brush.Color := $339900;
    can.Brush.Style := bsSolid;
    can.Rectangle(R);
    s := IntToStr(i + 1);
    Inc(X, (20 - can.TextWidth(s)) div 2);
    Inc(Y, (20 - can.TextHeight(s)) div 2);
    can.Brush.Style := bsClear;    
    can.TextRect(R, X, Y, s);
  end;
end;
Ответить с цитированием