Лабораторная работа 8. Создание текстурных заливок
Задание 1.
1. Откройте новый проект и разместите на нем компонент Image1(Additional). 2. Установите следующие размеры этого компонента: Width=255, Height=255.
Таким образом, поле для рисования будет 255х255=50725 пикселей, причем каждый пиксель будет изображать отдельное число. Числа будут образовывать спираль, раскручивающуюся от центра. Если число простое, то соответствующую ему точку закрасим черным цветом, иначе – желтым цветом.
3. Для определения простого числа напишем функцию Good. После строки {$R *.DFM} наберите следующий код.
function good(Numb:integer):boolean;
var
i:integer;
begin
good:=true;
for i:=2 to Trunc(Sqrt(Numb)) do
if (Numb mod i) =0 then
begin
good:=false;
exit;
end;
end;
После указания имени функции в круглых скобках указывается параметр Numb. Функция должна определить простое это число или составное и результат определения поместить после круглых скобок. В данном случае тип Boolean означает, что функция произведет результат True или False. Принцип работы функции Good заключается следующем. В цикле по i , пробегающему значению от 2 до Trunc(Sqrt(Numb)), проверяется делится ли число Numb на i. Если делится, то число Numb составное, иначе простое.
Добавим на форму кнопку Пуск и опишем событийную процедуру.
Procedure Tform1.Button1Click(Sender: Tobject);
Label
up;
var
i, // Счетчик цикла
x,y, // Текущие координаты точки
n, // Текущее число
nx,ny:integer; // Количество шагов вдоль осей х,у
begin
// Начальная установка
n:=2;
x:=Image1.Width div 2+ 1;
y:=x-1 ;
with Image1.Canvas do //Стандартные средства рисования
begin
Brush.Color:=clYellow;
FillRect(ClientRect); // Закрашиваем фон в желтый цвет
Pixels[x,y]:=clBlack; // Рисуем первую черную точку
ny:=1;
up: for i:=1 to ny do //Двигаемся вверх
begin
dec(y) ;
inc(n) ;
if good(n) then Pixels[x,y]:=clBlack;
end;
nx:=ny+1;
for i:=1 to nx do //Двигаемся влево
begin
dec(x) ;
inc(n) ;
if good(n) then Pixels[x,y]:=clBlack;
end;
ny:=nx;
for i:=1 to ny do //Двигаемся вниз
begin
inc(y);
inc(n);
if good(n) then Pixels[x,y]:=clBlack;
end;
nx:=ny+1;
for i:=1 to nx do //Двигаемся вправо
begin
inc(x);
inc(n);
if good(n) then Pixels[x,y]:=clBlack;
end;
if n>=image1.Width*Image1.Height
then exit;
ny:=nx;
Application.ProcessMessages;
goto up; //Переход в новому такту цикла
end;
end;
Задание 2.
Закомментируйте строку Application.ProcessMessages. Просмотрите, что происходит на экране. Процедура ProcessMessages необходима для того, чтобы прервать выполнение приложения (Application) и начать обработку сообщений (Messages), накопившихся в очереди.
Задание 3.
Замените текст функции good на следующий:
function good(Numb:integer):boolean;
var
i:integer;
begin
good:=(Numb mod 33=0);
for i:=2 to Trunc(Sqrt(Numb)) do
if Frac(Sqrt(Numb))=0 then
begin
good:=false;
exit;
end;
end;
Просмотрите получившийся узор.
Задание 4.
Снова замените текст функции good на следующий:
function good(Numb:integer):
var
i:integer;
begin
good:=true;
for i:=2 to Trunc(Sqrt(Numb)) do
if (Numb mod 33=0) then
begin
good:=false;
exit;
end;
end;
Задание 5.
Исследуйте другие свойства чисел. Узоры, которые будут получаться доставят вам удовольствие.
- 1. Теоретические основы объектно – ориентированного программирования 5
- 2. Использование системы программирования Delphi для создания Windows-приложений 9
- 3. Лабораторный практикум 27
- Введение
- 1. Теоретические основы объектно – ориентированного программирования
- 1.1.Объектная модель и ее элементы.
- 1.2.Основные понятия объектно-ориентированного подхода - объект и класс.
- 1.3.Методы построения классов.
- 2. Использование системы программирования Delphi для создания Windows-приложений
- 2.1. Интерфейс интегрированной среды разработки Delphi
- 2.2. Синтаксические правила языка Object Pascal
- 2.3. Создание и структура пользовательских приложений в среде Delphi
- 2.4. Структура модуля (*.Pas)
- 2.5. Создание формы и написание откликов на события
- 1) Компоновка формы и задание свойств компонентов
- 2) Написание отклика на событие
- 2.6. Компиляция и исполнение программы
- 2.7. Ввод и вывод данных. Функции преобразования типов данных
- 3. Лабораторный практикум Лабораторная работа 1. Разработка приложения Калькулятор
- Лабораторная работа 2. Использование курсоров в приложениях Windows.
- Лабораторная работа 4. Создание простого текстового редактора.
- Лабораторная работа 5. Рисование мышью в форме
- Лабораторная работа 6. Применение графических компонентов
- Лабораторная работа 7.Создание числовых изображений
- Лабораторная работа 8. Создание текстурных заливок
- Лабораторная работа 9. Поддержка справочной системы. Создание всплывающих подсказок.
- Лабораторная работа 10.Создание видеопроигрывателя
- Лабораторная работа 12.Создание браузера
- Лабораторная работа 13. Работа с внешним файлом.
- Лабораторная работа 14. Работа с базами данных.
- Лабораторная работа 15. Создание многооконных приложений.
- Литература Основная литература
- Дополнительная литература