|
|
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
stanilar Стрелочки можно нарисовать на холсте того компонента, на котором лежат Ваши наследники панели. А как сделать, чтоб стрелочки были поверх этих самых наследников (в том числе и всяких лейблов, имеджей и прочего, что я могу напихать в свой компонент позже). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 16:35 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
asviridenkov, В твоем случае один и тот же атрибут, для одного и того же элемента будет устанавливается не только из нескольких разных участков кода, но и из нескольких разных типов файлов (js, css, html). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 16:47 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич"для себя" Думаю что "для себя", если ты не планируешь стать гуру программирования вин-апи, есть задачи и поинтересней и более востребованней. Андрей ИгоревичНу и другие вещи (всякие скругленные бары и прочее) они рисует просто прекрасно у него свой алгоритм рисования. Разницу в картинках не вижу, но предполагаю что на ТееChart для 10-ки, по умолчанию, включено сглаживание для графиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 16:58 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
stanilarАндрей Игоревич"для себя" Думаю что "для себя", если ты не планируешь стать гуру программирования вин-апи, есть задачи и поинтересней и более востребованней.Яж прикладную задачу решить хочу, и хочу "чтоб было красиво (и удобно)" :), потому тыкаюсь в то, что удается найти или что вычитал. Но да, многие пути оказываются слишком сложными. stanilarАндрей ИгоревичНу и другие вещи (всякие скругленные бары и прочее) они рисует просто прекрасно у него свой алгоритм рисования. Разницу в картинках не вижу, но предполагаю что на ТееChart для 10-ки, по умолчанию, включено сглаживание для графиков. А я как-то могу "включить" эту функцию сглаживания для своих рисований на канвасе? П.С. На картинках очень большая разница, может у вас браузер сглаживает или масштабирует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 17:25 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичА я как-то могу "включить" эту функцию сглаживания для своих рисований на канвасе? Я уже писал, GDI+ или Direct2D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 17:36 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
asviridenkovАндрей ИгоревичА я как-то могу "включить" эту функцию сглаживания для своих рисований на канвасе? Я уже писал, GDI+ или Direct2DasviridenkovПри желании, за пол года вполне сможете сделать нормальную версию. Ладно, обойдусь пока без сглаживания... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 18:06 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
asviridenkovЯ уже писал, GDI+ или Direct2D Вроде у вин-контролов есть процедура, в котором они сами себя нарисовать могут. Можно самому алгоритм сглаживания написать. И не обязательно за пол года. Задача то сглаживать стрелочки? Такую, может быть, можно и из учебника скопипастить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 19:13 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
Я вот совсем чуть поковырялся с наследниками TGraphicControl (ну для примера тот же Image или SpeedButton) и такой вопрос возник, как же его на передний план выносить выше панелей, это же по сути рисунки. В интернете предлагают способы которые опять перекрывает другие компоненты. Пока вот не могу придумать. Есть ли возможность создать какой-нибудь невидимый слой, которые не перекрывает компоненты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 21:25 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
Все ваши шестиугольники и стрелочки - TGraphicsControl, а ПОЛЕ на котором они в конечно итоге нарисованы - TWinControl. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 21:30 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
DimaBrВсе ваши шестиугольники и стрелочки - TGraphicsControl, а ПОЛЕ на котором они в конечно итоге нарисованы - TWinControl. Я понимаю (это очевидно), но как я понял из написанного, мне предлагают отказаться от TWinControl использовав для рисования стрелок сразу TGraphicsControl на Форме/Большой Панели. Так как 3+ сотни TWinControl - это плохо. Отказываться от панелей под шестигранники не хочется, они удобные. А вот как стрелочки поверх нарисовать без TWinControl под них пока не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 21:41 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
авторОтказываться от панелей под шестигранники не хочется, они удобные. Что именно удобного ? автор А вот как стрелочки поверх нарисовать без TWinControl под них пока не понял. Графические Стрелочки могут быть нарисованы на Оконном контроле. Чтобы они были поверх шестиугольников, сами шестиугольники должны быть графическими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 21:52 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
DimaBrавторОтказываться от панелей под шестигранники не хочется, они удобные. Что именно удобного ? Ну основное что на них будет несколько label и image (на котором буду рисовать другие картинки (не стрелочки, но вместе со стрелочками)), может потом ещё что-то буду добавлять из компонентов (там много всего разного в зависимости от загруженных данных). Которые я просто кинул на панель и дальше мне только саму панельку двигать и больше ни о чем не думать (в картинках примерах я показал что у меня всё двигается, перемещается и перетаскивается, маштабируется, сейчас сделано через взаимные связи координат). На что ещё можно кинуть другие компоненты и при этом, что бы можно было обрезать компонент по контуру (шестиугольник)? Ещё на панель удобно перетаскивать мышкой чрез предельно простые две строчки кода. DimaBrавтор А вот как стрелочки поверх нарисовать без TWinControl под них пока не понял. Графические Стрелочки могут быть нарисованы на Оконном контроле. Чтобы они были поверх шестиугольников, сами шестиугольники должны быть графическими. И это мало чем будет отличаться от того, что рисую я сейчас, просто перехват координат на рисунке и события будет сам делфи делать. Я хочу, что бы была возможность навести/кликнуть на любое число/рисунок и увидеть дополнительную информацию, по сути у меня получилось почти всё, кроме треклятых стрелочек :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 22:38 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
Я тут подумал, что может не очень точно выразился в часть "не блокирует взаимодействие", то место где сами стрелки находятся, там можно и блокировать взаимодействие(это не очень важно), просто все доступные способы рисования стрелки блокируют не только контур стрелки, но и весь прямоугольник в который она вписана. В принципе я могу обрезать панель чуть шире стрелки и сделать её прозрачной, по крайней мере то ужасное обрезание лесенками не будет видно. Но это всё равно приведет у нескольким сотням ВиндКонтролов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 22:48 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
авторНу основное что на них будет несколько label и image (на котором буду рисовать другие картинки Зачем кидать какие то дополнительные контролы ? Не проще ли просто вывести текст и картинку поверх шестиугольника ? авторЯ хочу, что бы была возможность навести/кликнуть на любое число/рисунок и увидеть дополнительную информацию Разве нельзя обработать клик по шестиугольнику ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 22:54 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
Смотрите, какая есть заготовка !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 22:56 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
DimaBrавторНу основное что на них будет несколько label и image (на котором буду рисовать другие картинки Зачем кидать какие то дополнительные контролы ? Не проще ли просто вывести текст и картинку поверх шестиугольника ? авторЯ хочу, что бы была возможность навести/кликнуть на любое число/рисунок и увидеть дополнительную информацию Разве нельзя обработать клик по шестиугольнику ? Ну я вначале это описал, всё можно, даже не просто можно, я как бы уже всё это сделал почти так (просто перехват координат и события реализовал сам, а не через компоненты). Сложно объяснить не углубляясь в суть отображаемых данных (а это долго), но панель с контролами просто банально удобнее как с алгоритмичесткой точки зрения (есть один компонент, который полностью самодостаточен, рисование, перемещение, вывод данных, обработку событий, вывод хинтов и т.п. всё можно реализовать внутри него, а я просто присваиваю параметры и всё), так и с точки зрения кода. Ну банально, вот хочу я переместить один шестиугольник (смотри картинки "примеры" в первом комментарии), в случае с панелькой я просто перемешаю её и как бы всё, больше ничего не надо, а в случае с компонентами надо их как-то связать (компоненты одного шестиугольника), перемещать совместно. Я попробую сделать как вы говорите, может там и не так всё сложно. Просто уж больно мне компонент- наследник панели понравился, ни тебе канвасы не нужны, ни какие-то дополнительные условия. DimaBrСмотрите, какая есть заготовка !!! А что тут происходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 23:18 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичСложно объяснить не углубляясь в суть отображаемых данных (а это долго), но панель с контролами просто банально удобнее как с алгоритмичесткой точки зрения Пока не захотите все это зуммировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 23:28 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
asviridenkovАндрей ИгоревичСложно объяснить не углубляясь в суть отображаемых данных (а это долго), но панель с контролами просто банально удобнее как с алгоритмичесткой точки зрения Пока не захотите все это зуммировать А в чем подводные камни? Я планировал отключать видимость панели на которой они расположены (и всех своих компонентов), далее менять размеры панелей, "перевырезать" форму и опять включать. Хотя лейблы надо будет смещать, но относительные координаты просто на коэффициент помножить, не сложно, вроде. Если панели созданы и невидимы SetWindowRgn, вроде, быстро работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2019, 23:34 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
на коленке Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2019, 00:04 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2019, 00:14 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
DimaBr Повторил, заменив текс на лейблы. В принципе рабочая схема. Но по факту - стрелки это рисунок который всё время надо перерисовывать. Ну и форма Пейнбокса таки квадрат в который что-то вписано, с соответсвующим перекрытием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2019, 11:41 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичDimaBr Но по факту - стрелки это рисунок который всё время надо перерисовывать.потому что кадр нужно генерировать целиком, сразу со всеми элементами, и только после этого выводить на экран, например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2019, 12:07 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичПовторил, заменив текс на лейблы. В принципе рабочая схема. Но по факту - стрелки это рисунок который всё время надо перерисовывать. Ну и форма Пейнбокса таки квадрат в который что-то вписано, с соответсвующим перекрытием Выставь просто DoubleBuffered = True у контейнера (в данном случае это TForm1) на котором находятся все компоненты. VCL сделает двойную буферизацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2019, 12:30 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
КвейдАндрей Игоревичпропущено... Но по факту - стрелки это рисунок который всё время надо перерисовывать.потому что кадр нужно генерировать целиком, сразу со всеми элементами, и только после этого выводить на экран, например Понятно, просто тоже надо продумывать будет. А что у вас на гифке происходит? kealon(Ruslan)Андрей ИгоревичПовторил, заменив текс на лейблы. В принципе рабочая схема. Но по факту - стрелки это рисунок который всё время надо перерисовывать. Ну и форма Пейнбокса таки квадрат в который что-то вписано, с соответсвующим перекрытием. Выставь просто DoubleBuffered = True у контейнера (в данном случае это TForm1) на котором находятся все компоненты. VCL сделает двойную буферизацию. Спасибо, попробую, не успел ещё с ней разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2019, 13:20 |
|
||
|
Создание компонента сложной формы (аккуратной контурной стрелки).
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичПонятно, просто тоже надо продумывать будет. А что у вас на гифке происходит? Это пример того, о чем я говорил. Кадр со всеми элементами (линиями и якорями, за которые линии "цепляются") прорисовывается в буфере, затем целиком выводится на экран. Получается плавная анимация. В вашей задаче нужно реализовать подобный механизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2019, 13:29 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39855400&tid=2038657]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
94ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 484ms |

| 0 / 0 |
