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

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

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

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

Сообщение velaskes » 09.04.2019 11:18:03

whatsapp-1900453_960_720.png

Господа, подскажите в какую сторону копать, чтобы попробовать создать нечто подобное на Win/Lazarus?
Electron и иже с ним не предлагать :D Может уже существуют какие-то наработки?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось velaskes 09.04.2019 11:32:54, всего редактировалось 1 раз.
velaskes
новенький
 
Сообщения: 24
Зарегистрирован: 11.03.2016 23:16:17

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

Сообщение Ichthyander » 09.04.2019 11:29:37

На картинке должна была быть иллюстрация, как я понимаю, а не указание на то, что втраивать картинку на сторонних ресурсах нельзя? )
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

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

Сообщение velaskes » 09.04.2019 11:34:05

Починил :D
velaskes
новенький
 
Сообщения: 24
Зарегистрирован: 11.03.2016 23:16:17

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

Сообщение Vadim » 09.04.2019 12:22:11

velaskes
Это типа компоненты с загруглёнными углами?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение velaskes » 09.04.2019 12:39:31

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

а еще плавная прокрутка, "резиновое" поведение и все такое) Например компонент чата, как на скрине.
Как я понимаю, за основу надо брать TScrollBox, а внутри TShape'ы, внутри которых текст/картинка? :lol:
Правильно мыслю?)
velaskes
новенький
 
Сообщения: 24
Зарегистрирован: 11.03.2016 23:16:17

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

Сообщение serbod » 09.04.2019 12:53:17

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

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

2. Создать свои визуальные компоненты (контролы), которые умеют себя отрисовывать по команде Paint(). В таком случае упрощается расчет положения элементов текста, можно использовать стандартные контейнеры контролов - TFlowPanel, TScrollBox. Вот пример исходников такого чата - https://github.com/serbod/talaria/blob/ ... tframe.pas
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

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

Сообщение velaskes » 09.04.2019 13:04:07

serbod спасибо за наводку! :wink:
velaskes
новенький
 
Сообщения: 24
Зарегистрирован: 11.03.2016 23:16:17

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

Сообщение Vadim » 09.04.2019 13:07:16

А если попробовать BGRAControls?
https://github.com/bgrabitmap/bgracontrols
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение zoltanleo » 09.04.2019 16:24:42

Была же совсем недавно похожая тема
viewtopic.php?f=5&t=42525&hilit=TEdit#p148651
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 457
Зарегистрирован: 17.10.2013 10:55:01

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

Сообщение Лекс Айрин » 09.04.2019 20:08:06

zoltanleo, и не одна. Я сам подобную создавал. Отрисовка любого компонента имеющего канвас вообще элементарная процедура. Ну а резиновость создаётся с помощью привязок. Можно даже окно целиком нарисовать. Только вот придется делать фальшивый заголовок.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 37

Рейтинг@Mail.ru