|
|
|
В paintbox реализовать перетаскивание нарисованных фигур и изменение их размера
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Реально ли в paintbox реализовать перетаскивание нарисованных фигур и изменение их размера? В голову пришло пока только такое решение: 1) Каждую фигуру рисовать на отдельном TBitmap(а ля слои в фотошопе) 2) Создать объект "фигура" и хранить в нем id фигуры, тип фигуры, ее координаты(или прямоугольник в который она вписана) и битмап с которым она связана, флаг-редактируется ли фигура и хранить все это в TObjectList. 3) отслеживать клик мышкой и проверять попадают ли координаты клика в прямоугольник фигуры 4) если совпало - поставить флаг, что эта фигура редактируется и рисовать вокруг фигуры прямоугольник с метками по краям для растягивания/уменьшения и где нибудь показать кнопку "применить" 5) При нажатии применить - обновить информацию в объекте и перерисовать соответствующий битмап Так же есть идея сделать отмену действия(ctrl+z): 1) Создать объект "действие" и хранить в нем id фигуры тип действия(добавление, редактирование, удаление), начальное положение и прямоугольник и конечное положение и прямоугольник - для хранения всего этого так же использовать TObjectList 2) При клике мышкой запоминать начальное состояние фигуры, при отпускании - конечное 3) При нажатии ctrl+z смотреть последний объект, менять характеристики фигуры с "стало" на "было", перерисовывать битмап фигуры и удалять последний добавленный объект "действие". На сколько бредовую чушь я написал выше?) Если выше написал глупости - есть ли способ сделать правильно?(как?) P.S.: Я использую RAD Studio 10.3 Community Edition ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 03:20 |
|
||
|
В paintbox реализовать перетаскивание нарисованных фигур и изменение их размера
|
|||
|---|---|---|---|
|
#18+
bigjoe, посмотри "джедаев", там был готовый проект-рисовалка, вместе со статьей "как это работает". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 03:28 |
|
||
|
В paintbox реализовать перетаскивание нарисованных фигур и изменение их размера
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 03:38 |
|
||
|
В paintbox реализовать перетаскивание нарисованных фигур и изменение их размера
|
|||
|---|---|---|---|
|
#18+
bigjoe 1) Каждую фигуру рисовать на отдельном TBitmap(а ля слои в фотошопе) 2) Создать объект "фигура" и хранить в нем id фигуры, тип фигуры, ее координаты(или прямоугольник в который она вписана) и битмап с которым она связана, флаг-редактируется ли фигура и хранить все это в TObjectList. 3) отслеживать клик мышкой и проверять попадают ли координаты клика в прямоугольник фигуры 4) если совпало - поставить флаг, что эта фигура редактируется и рисовать вокруг фигуры прямоугольник с метками по краям для растягивания/уменьшения и где нибудь показать кнопку "применить" 5) При нажатии применить - обновить информацию в объекте и перерисовать соответствующий битмап 1. Все фигуры продолжают рисоваться одним списком. 2. Научить Фигуру рисоваться в заданной прямоугольной области, присвоить флаг видимости. 3. Редактирование а) При клике мышкой на PaintBox (в режиме редактирования), определить в какую фигуру попала точка клика (PtInRect по списку), б) у найденой фигуры убрать видимость, и отрисовать её на ВТОРОМ PainBox-е, который и будем двигать и растягивать. в) по окончанию изменения, передать новые значения в фигуру списка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 08:32 |
|
||
|
В paintbox реализовать перетаскивание нарисованных фигур и изменение их размера
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, Не могли бы Вы чуть подробнее рассказать? я ведь правильно понял, что речь про это https://github.com/project-jedi/jvcl ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 09:37 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39961998&tid=2038284]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
142ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 426ms |

| 0 / 0 |
