Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2014, 20:02   #1
Вадим Вергун
Пользователь
 
Регистрация: 01.11.2014
Сообщений: 52
По умолчанию Блокировка рисования

Имеется следующий код:
Код:
uses
  ABCObjects, GraphABC;

var
  x, y, i, x1, y1, r, r1, m, z, xx, yy, d: integer;
  c: CircleABC;
  a: array[-100..2000, -100..2000] of color;
  s1: RectangleABC;

label u, p;
begin
  Window.Width := 600;
  Window.Height := 600;
  Window.Title := 'Генерация карты';
  Window.SetPos(1, 1);
  Window.IsFixedSize := True;
  ClearWindow(clGreen);
  s1 := new RectangleABC(1, 1, 599, 20, clMoneyGreen); 
  s1.Text := 'Введите число интераций (от 0 до 200)';
  readln(m);
  s1.Text := 'Введите число флоктаций (от 0 до 3000)';
  readln(z);
  ClearWindow(clNavy);
  LockDrawing;//Блокировка рисованя.
                 //
  //Пририсовка фона
  for r := 3 to 597 do
    for r1 := 3 to 597 do
      case random(r, 7000) of
        0..4099: 
          begin
            Setpixel(r1, r, clYellow);
            a[r1, r] := clYellow end;
        4100..6999:
          begin
            Setpixel(r1, r, clSilver);
            a[r1, r] := clSilver end;
        7000:
          begin
            PictureABC.Create(r, r1, 'Фон.png');// !!!!!!!!!!  Рисунок ///////////////// прорисовуется !!
          end;
      end;
                  //
  //Постановка флоктаций                
  for r := 1 to z do
    a[random(40, 560), random(40, 560)] := clGreen;
  for i := 1 to m do
    for x := 1 to 600 do
      for y := 1 to 600 do
                       //
        // Генерерация корпункул             
        if a[x, y] = clGreen 
        then begin
          x1 := x - Random(-1, 1);
          y1 := y - Random(-1, 1);
          s1.Number := i;
          if (a[x1, y1] = clYellow) or (a[x1, y1] = clSilver) then
          begin
            case random(1, 100) of
              1..40: a[x1, y1] := clGreen;//Генерация зелёного.
              41..96: a[x1, y1] := clBlue;//Генерация синего.
                              //
              //Генерация красного и чорного.
              97..98: 
                begin
                  a[x1, y1] := clBlack;
                  a[x1 + Random(-1, 1), y1 + Random(-1, 1)] := ClRed;
                  a[x1 + Random(-1, 1), y1 + Random(-1, 1)] := ClRed;
                  a[x1 + Random(-1, 1), y1 + Random(-1, 1)] := ClRed;
                  //
                  //Генерация коричневого и фиолетового.
                end;
              99..100:
                begin
                  a[x1, y1] := clMagenta;
                  a[x1 - 1, y1] := clBrown;
                  a[x1, y1 - 1] := clBrown;
                  a[x1 - 1, y1 - 1] := clBrown;
                  a[x1 + 1, y1] := clBrown;
                  a[x1, y1 + 1] := clBrown;
                  a[x1 + 1, y1 + 1] := clBrown;
                end;
            end;
          end;
                      //
          // Перенос во внеэкранный буфер
          setpixel(x1, y1, a[x1, y1]);
          setpixel(x1 - 1, y1, a[x1 - 1, y1]);
          setpixel(x1, y1 - 1, a[x1, y1 - 1]);
          setpixel(x1 - 1, y1 - 1, a[x1 - 1, y1 - 1]);
          setpixel(x1 + 1, y1, a[x1 + 1, y1]);
          setpixel(x1, y1 + 1, a[x1, y1 + 1]);
          setpixel(x1 + 1, y1 + 1, a[x1 + 1, y1 + 1]);
        end;           //
  Redraw;//Вывод на экран.
  for r := 3 to 597 do
    for r1 := 3 to 597 do
      case random(1, 200000) of
        1: PictureABC.Create(r, r1, '1.png');
        2: PictureABC.Create(r, r1, '2.png');
        3: PictureABC.Create(r, r1, '3.png');
        4: PictureABC.Create(r, r1, '4.png');
      else 
      end ;
end.
Рисование на экране отключено, НО функция "PictureABC.Create(r, r1, 'Фон.png')" выводит на экран рисунок в момент её выполнения. Подскажите что не так.

Последний раз редактировалось Stilet; 30.12.2014 в 09:39.
Вадим Вергун вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Програма рисования графіка mato Visual C++ 0 11.05.2012 16:35
Программа рисования с фортрана на Си minor Visual C++ 3 30.04.2012 17:32
Delphi. Область рисования. rubius2008 Помощь студентам 0 21.11.2010 00:23
C# Процедура рисования Alexen C# (си шарп) 6 15.10.2010 08:31