Работа Работайте как хотите. Но: Если нажать правой кнопкой на картинке, то появится контексное меню. Кнопкой Ins можно копировать картинку в буфер обмена, а кнопкой F2 записать в 24bit BMP-файл. Как закрыть окно "О программе", думаю, догадаетесь (там два способа). Подключение модулей Для подключения модуля необходимо скопировать его в каталог с исполняемым файлом и запустить этот исполняемый файл. Собственные процедуры Собственные процедуры должны задаваться в DLL'ке, в которой есть функция Painter. Эта функция возвращает переменную типа Variant, содержащую массив строк с названиями функций. Переменная Name должна содержать название библиотеки, которое показывется в дереве функций (по умолчанию это имя файла библиотеки). Каждая регистрируемая функция должна соотвутствовать указанному шаблону и удовлетворять следующим условиям: - Возвращаемый результат - это название функции в дереве функций. - При D<0 в R возвращается способ симметрии, а в G возвращается способ обработки переполнения. - При D>=0 в R,G,B возвращаются мощности цветов (красного, зеленого и синего) в интервале [0..1]. При выходе за промежуток [0..1] значения цветов зависят от способа обработки переполнения. Если он равен cutFrac (0), то берется дробная часть, а если равен cutNear (1), то значение просто "поджиматеся в интервал [0..1] в зависимости от того, в какую сторону произошло переполнение. Замечание1: Все функции, разумеется, должны быть экспортируемыми. Замечание2: X,Y находятся в интервале [-1..+1] ([0..1] в зависимости от симметрии). D находится в интервале [0..1] A находится в интервале [-pi/2..+pi/2] (такова функция ArcTan) Пример смотрите в каталоге Example. const symZero=0; symHorz=1; symVert=2; symNone=3; cutFrac=0; cutNear=1; function Painter(var Name:ShortString):variant; function f1(x,y,a,d:Extended; var r,g,b:Extended):ShortString;