Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
tvp.doc
Скачиваний:
2
Добавлен:
08.11.2019
Размер:
1.12 Mб
Скачать

Лабораторная работа № 12. Создание графического редактора.

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

Используйте компонент Image, умеющий через свойство Picture работать с графическими файлами, например,

Image.Picture.LoadFromFile(CurrentFile);

Рисование происходит в обработчиках событий от мыши. Событие перемещения указателя мыши OnMouseMove имеет тип

type TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X, Y: Integer) of object,

где параметр Shift позволяет узнать, были ли нажаты при перемещении указателя клавиши клавиатуры Shift, Ctrl, Alt или кнопки мыши (константы ssAlt, SSCtrl, ssShift обозначают ситуацию нажатия соответствующих клавиш, константы ssLeft, ssRight, ssMiddle, ssDouble обозначают ситуацию нажатия клавиш мыши, причем ssDouble – нажатия и правой, и левой кнопки);

параметры X и Y содержат новые координаты указателя мыши в клиентской области объекта Sender.

Событие нажатия/отпускания кнопки мыши OnMouseDown/OnMouseUp:

type

TMouseEvent = procedure(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object,

где Button: TMouseButton – идентификатор кнопки,

TMouseButton = (mbLeft, mbRight, mbMiddle).

В редакторе следует предусмотреть возможность рисования «карандашом», заливку указанной замкнутой области (например, при нажатии в нужной области правой кнопки мыши), рисование предопределенных фигур (окружностей, эллипсов, прямоугольников и т.д.), изменение цвета карандаша и заливки. Кроме того, необходимо реализовать сохранение результатов в файле, открытие произвольного графического файла и создание нового файла.

Задания для самостоятельной работы

  1. Напишите программу, которая считывает массив целых чисел из текстового файла, четные числа заносит в список Listbox1, нечетные - в ListBox2.

  2. Напишите программу, которая строит график по числам, вводимым в текстовом редакторе.

  3. Создайте на основе класса TStringGrid таблицу, по строкам которой находятся данные по продаже товара за каждый месяц, а по столбцам - данные по продаже каждого вида товара. Вычислите средние продажи за год для каждого вида товара и постройте получившуюся зависимость в виде столбиковой диаграммы.

  4. В задаче 3 построить круговую диаграмму.

  5. Написать программу «Визуальное редактирование графа» с возможностью сохранения структуры графа в файле.

  6. Напишите программу, которая считывает содержимое текстового файла и на отдельной форме выводит словарь используемых слов с указанием частоты использования.

  7. Напишите программу–калькулятор.

  8. Напишите программу, которая реализует электронную таблицу умножения.

  9. Напишите программу, которая считывает содержимое текстового файла и на отдельной форме выводит информацию о словах различной длины с указанием частоты повторения.

  10. Слить два отсортированных файла в один. Вид сортировки задается пользователем.

  11. Перевести n-ричное число в m-ричное.

  12. По заданной дате определить день недели.

  13. Сгенерировать текстовое представление введенного числа.

  14. Перевести заданное арабское число в римское.

  15. Определить, является ли введенная строка римским числом. Если является, то перевести это римское число в арабское.

  16. Запрограммируйте тестирование знаний в области англо-русского перевода с указанием процента правильных ответов (пропущенный ответ засчитывается как неправильный).

  17. Запрограммируйте тестирование знаний по курсу СППО с указанием процента правильных ответов (пропущенный ответ засчитывается как неправильный).

  18. Запрограммируйте тестирование знаний в области дифференцирования с указанием процента правильных ответов (пропущенный ответ засчитывается как неправильный).

  19. Запрограммируйте тестирование знаний в области интегрирования с указанием процента правильных ответов (пропущенный ответ засчитывается как неправильный).

  20. Зашифровать текст наложением гаммы.

  21. Зашифровать текст методом перестановки с автоматическим вычислением длины ключей шифрования.

  22. Написать программу просмотра графических файлов с развитым интерфейсом: удобной системой навигации по папкам, виртуальными альбомами с функциями предпросмотра, возможностями цветовой коррекции изображения, изменения размеров и др.

23. Написать демонстрационную учебную программу «Плотности распределения вероятностей».

24. Программа «Моделирование временного ряда». Использовать модель АРСС. Предусмотреть возможность случайных и детерминированных входных воздействий.

25. Написать программу идентификации АР-модели временного ряда методом наименьших квадратов.

26. Написать программу идентификации АР-модели временного ряда рекуррентным методом наименьших квадратов.

27. Написать программу расчета спектральной плотности мощности периодограммным методом.

28. Написать программу расчета спектральной плотности мощности коррелограммным методом.

29. Программа «Моделирование стохастических уравнений состояния».

30. Наблюдатель состояния линейной системы.

31. Программа «Частотные характеристики звена второго порядка».

32. Программа «Годограф».

33. Программа "Переходные процессы".

34. Программа «Импульсные характеристики».

35. Программа «Система управления с обратной связью».

36. Программа «Фильтр нижних частот Баттерворта».

Литература

1. Архангельский А.Я. Программирование в Delphi 7 / А.Я.Архангельский. — М.: ООО ォБином-Прессサ, 2003 г. — 1152 с..

2. Кэнту М. Delphi 7: Для профессионалов / М. Кэнту. – СПб. Питер, 2004. – 1101 с.

3. Архангельский А.Я. Delphi 2006. Справочное пособие: Язык Delphi, классы, функции Win32 и .NET / А.Я.Архангельский. — М.: ООО «Бином-Пресс», 2006 г. — 1152 с.

4. Методические указания к курсу «Визуальное программирование в Delphi». Объктно-ориентироаванное программироание. Создание нового компонента / сост. Тюкачев Н.А., Рудалев В.Г., Бакланов М.В. – Воронеж.: изд–во ВГУ, 1999. – 34 с.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]