Существует общее правило, по которому любой текст или графика в вашем коде, рисующем полотно формы, должны обладать способностью легко перерисовываться, в идеале - с единственным вызовом функции. Лучше всего собрать любые вызовы к - TextOut, Polyline, Rectangle, Ellipse и так далее - в единственную процедуру, которую вы сможете вызвать из процедуры обработчика, выполняемого тогда, когда происходит событие OnPaint. Изучите, сколько обработчиков имеет SpiroMania. Для хорошего усвоения на основе кода в FormPaint, который вызывает SpinWheels, составьте программу, а затем скомпилируйте ее, потом закройте и откройте ее, или уберите ее в пиктограмму, а затем вновь продемонстрируйте ее. Ваш узор будет убираться, пока вы снова не нажмете кнопку Spin

УЛУЧШЕНИЯ ДЛЯ SPIROMANIA

Я храню SpiroMania, так как она настолько проста, настолько это возможно, и, следовательно, ее легко понять, но раз вы поняли ее, то поняли и то, что существует множество недостатков, которые можно к ней отнести. Наиболее значительный из них заключается в том, что хотя она может отображать многочисленные узоры один поверх другого, она не может перерисовывать множество узоров. То есть, если вы наложите на форму два или более узора, а затем закроете форму другим окном, только самые последние узоры будут вновь нарисованы при новом появлении SpiroMania на экране.

Правильный путь управлять этим, это создать простой объект, который определяет состояние узора: его А, В, и D значения, также как и его цвет и, наверное, толщину линии. Затем создайте объект TList для запоминания подобного объекта-пиклоиду для каждого нарисованого вами узора, и его считывания - одного за другим из TList в любое время, когда вы перерисовываете форму. Когда вы очищаете форму, очищается и TList.

Добавление элемента контроля позволяет записывать толщину линии, что может пригодиться для создания другой интересной вещи, хотя лично я в любом случае предпочитаю более тонкие линии.

Когда я впервые написал генератор циклоид в Turbo Pascal (увы! уже более десяти лет назад), тогдашние машины были такими медленными, что вы и в самом деле могли наблюдать как при рисовании на экран накладываются петля за петлей. Теперь же узоры, кажется, почти мгновенно вспыхивают на месте, но было как-то немного веселее наблюдать его медленное, достаточное, чтобы следить за ним, рисование. Попытайтесь произвести задержку по времени между каждой линией, которые рисует Spin Wheels Ну как? Используйте объект Timer (Таймер) в Delphi. Это вам подсказка.

.. .остальное я оставляю на вашу изобретательность..

СОЗДАНИЕ ПРОСТЫХ ПРИЛОЖЕНИЙ - БАЗ ДАННЫХ

Джим Мишел

Встроенные средства баз данных Delphi стопь мощны, что вы можете создавать полезные одноуровневые файлы или ведуще-детализированные базы данных без написания вообще какого-либо кода на Object Pascal!

Химия в высшей школе* была пустяком. (В действительности она проходила на-ура - но это другая история...) Инструктор в течение часа рассказывал в классе о предстоящем эксперименте, а затем отводил нас в лабораторию, где мы должны были выполнить эксперимент и прийти к тем выводам, которые он изложил на доске часом раньше. И если у вас ничего не вышло с лабораторным опытом (или вы вообще делали что-то другое), былодостаточно просто подогнать числа так, чтобы они выглядели так, будто вы выполнили эксперимент и ваши результаты укладывались в рамки допустимой погрешности. Имея хорошую память и природную способность (и склонность) к манипулированию цифрами, мне неприходилось слишком напрягаться, чтобы получать хорошие оценки по курсу химии в высшей школе.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в среде Delphi



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31