Свой компонент like MobOS

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
velaskes
новенький
Сообщения: 24
Зарегистрирован: 11.03.2016 22:16:17

Свой компонент like MobOS

Сообщение velaskes »

whatsapp-1900453_960_720.png

Господа, подскажите в какую сторону копать, чтобы попробовать создать нечто подобное на Win/Lazarus?
Electron и иже с ним не предлагать :D Может уже существуют какие-то наработки?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось velaskes 09.04.2019 10:32:54, всего редактировалось 1 раз.
Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

Сообщение Ichthyander »

На картинке должна была быть иллюстрация, как я понимаю, а не указание на то, что втраивать картинку на сторонних ресурсах нельзя? )
velaskes
новенький
Сообщения: 24
Зарегистрирован: 11.03.2016 22:16:17

Сообщение velaskes »

Починил :D
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

velaskes
Это типа компоненты с загруглёнными углами?
velaskes
новенький
Сообщения: 24
Зарегистрирован: 11.03.2016 22:16:17

Сообщение velaskes »

Vadim писал(а):Это типа компоненты с загруглёнными углами?

а еще плавная прокрутка, "резиновое" поведение и все такое) Например компонент чата, как на скрине.
Как я понимаю, за основу надо брать TScrollBox, а внутри TShape'ы, внутри которых текст/картинка? :lol:
Правильно мыслю?)
Аватара пользователя
serbod
постоялец
Сообщения: 449
Зарегистрирован: 16.09.2016 10:03:02
Откуда: Минск
Контактная информация:

Сообщение serbod »

Там по сути ничего сложного, есть два основных варианта:

1. Отрисовывать "пузыри", картинки и текст на холсте. Лучше это делать при помощи графической библиотеки, например AggPas или BGRABitmap, там есть сглаживание линий и шрифтов, всякие визуальные эффекты. Но перед отрисовкой нужно для каждого элемента просчитать координаты и размеры. В графических библиотеках для этого есть удобные средства - виртуальный холст с изменяемым viewport (видимая область), и где можно без тормозов рисовать сотни тысяч объектов не заморачиваясь с границами видимости, системой координат, скроллингом, масштабом и прочими вещами.

2. Создать свои визуальные компоненты (контролы), которые умеют себя отрисовывать по команде Paint(). В таком случае упрощается расчет положения элементов текста, можно использовать стандартные контейнеры контролов - TFlowPanel, TScrollBox. Вот пример исходников такого чата - https://github.com/serbod/talaria/blob/ ... tframe.pas
velaskes
новенький
Сообщения: 24
Зарегистрирован: 11.03.2016 22:16:17

Сообщение velaskes »

serbod спасибо за наводку! :wink:
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

А если попробовать BGRAControls?
https://github.com/bgrabitmap/bgracontrols
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

Была же совсем недавно похожая тема
viewtopic.php?f=5&t=42525&hilit=TEdit#p148651
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

zoltanleo, и не одна. Я сам подобную создавал. Отрисовка любого компонента имеющего канвас вообще элементарная процедура. Ну а резиновость создаётся с помощью привязок. Можно даже окно целиком нарисовать. Только вот придется делать фальшивый заголовок.
Ответить