Почему в Graph3D примитивы создаются функциями, а не напрямую?
В GraphABC тоже примитивы создаются функциями. Circle(x,y,r) например. Логика такая. Если объект достаточно создать и потом им можно не управлять, то функциями. Если всегда управлять, то конструктором
Погодите, но в Graph3D мы же управляем объектами.
uses Graph3D;
begin
var s := Box(0,0,0,3,1,2,Colors.Blue);
var an := Animate.Sequence(
s.AnimMoveOnY(5),
s.AnimMoveOnX(5)
);
an.Begin;
end.
Вот у Вас пример нашёл.
МОЖЕМ управлять. Да. Но можем просто стационарно нарисовать.
А когда создаём с целью управления, то конструктор.
Считайте это особенностью реализации. Разработчики приняли такое решение.
Да, вы можете управлять, а можете не управлять, поэтому функцией. Потому что вы можете не присваивать результат функции переменной. А если через new
- то это то чем обязательно управлять (хотя вы тоже можете не присваивать переменной, но выглядит это странно).
Понял. Кстати, а будет ли версия новых модулей на основе WPF (GraphWPF, WPFObjects (помнится так называется) и т.д.) на русском (с функциями на русском)? Для начинающих, думаю, будет полезно.
Нет. Мы мечтаем сделать на уровне языка двуязычную таблицу символов для таких целей. Но пока сил и ресурсов не хватает на это.
Кстати, если кто-то из сообщества возьмётся русифицировать эти модули - мы готовы.
Чтобы можно писать что-то на подобии:
начать
вывести();
конец.
?
Да, в точку. Вот такой код напрягает:
new Icosahedron(p,2,Colors.Green);
new Dodecahedron(p,2,Colors.Blue);
Ну, на самом деле ещё можно писать
Icosahedron.Create(p,2,Colors.Green);
Dodecahedron.Create(p,2,Colors.Blue);
Но это секрет доступный лишь избранным)))
Тогда как Вы смотрите на предложение сделать функциями создание примитивов в WPFObjects? Чтобы в одном стиле было все в модулях для обучения - функциями.
Делайте конечно дополнительный модуль-обёртку раз Вам так почему-то удобнее. Но WPFObjects предназначен как раз для управления объектами. Это следует из его названия.
Нет - я не говорил, что мне так удобнее. Я предложил. Вы отвергли. И я понимаю почему.
Там еще будет модуль Controls, который в панели слева в GraphWPF, WPFObjects и Graph3D будет создавать панель, где будут располагаться кнопки и прочие элементы управления. Вот они будут создаваться по new:
var b := new Button('Закрой меня');
b.Click := procedure -> Window.Close;
Даёшь программистов в стиле Button1.OnClick!
Это замена FormsABC?
Ну да, можно сказать и так. Не совсем полноценная - это только панель именно в графических приложениях.
И - тупо более простая: все элементы управления создаются одним из автоматических методов размещения минимумом кода. Никаких изысков там будет создать нельзя - это нужно только для иллюстрации программирования с контролами. Хотя предполагается меню и статус-бар с несколькими областями.
А Вы будете немного дорабатывать FormsABC, если это не совсем замена ему? Например, позволить изменять цвета элементов управления было бы полезно. Начинающий, как никто другой, хочет видеть яркие разноцветные приложения. Я же прав?
Сейчас это не направление нашего развития. Мы задали вектор некими крупными мазками. Но в практике нашего обучения модуль не используется.
Хотя идея хорошая. Если бы кто-то из сообщества за это взялся, мы его бы направили. Прежде всего, надо делать FormsWPF как более прогрессивную платформу.
Графика - отдельная ветка в программировании. Если интерфейс консольный, программист сосредоточивается на реализации алгоритма. Если графический - его конструирование и доводка “чтобы смотрелось” отнимают массу добавочного времени. Это нормально в реальной жизни, но отъедает массу времени при обучении. Т.е. графика - это современно и необходимо, но крайне трудозатратно. Поэтому - да, на разработку библиотек для реализации графических интерфейсов нужно искать добавочный людской ресурс. На настоящий момент меня напрягает, что когда я хочу в своем консольном приложении показать параллельно еще и графический результат, это не реализуешь - окно изначально или для консольного вывода, или для графики. Тот же график нарисовать в Draw - быстро и просто, но он, во-первых, лишь картинка без разметки осей и масштаба, во-вторых - чтобы эту картинку показать, я должен все делать в графическом окне. А хотелось бы “без шума и пыли” из своего консольного приложения уметь просто обратиться к какому-то методу и получить нечто вроде этого График функции.pas (1,6 КБ)
А Вы могли бы поподробнее рассказать про FormsWPF? Что будет в нём, что не было в FormsABC?