Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] 3 4 5 вперед Ctrl→ все |
Андрей Игоревич Member Откуда: Сообщений: 319 |
А как сделать, чтоб стрелочки были поверх этих самых наследников (в том числе и всяких лейблов, имеджей и прочего, что я могу напихать в свой компонент позже). |
||
29 авг 19, 16:35 [21959997] Ответить | Цитировать Сообщить модератору |
stanilar Member Откуда: Спб Сообщений: 886 |
asviridenkov, В твоем случае один и тот же атрибут, для одного и того же элемента будет устанавливается не только из нескольких разных участков кода, но и из нескольких разных типов файлов (js, css, html). |
29 авг 19, 16:47 [21960007] Ответить | Цитировать Сообщить модератору |
stanilar Member Откуда: Спб Сообщений: 886 |
Думаю что "для себя", если ты не планируешь стать гуру программирования вин-апи, есть задачи и поинтересней и более востребованней.
|
||||
29 авг 19, 16:58 [21960014] Ответить | Цитировать Сообщить модератору |
Андрей Игоревич Member Откуда: Сообщений: 319 |
А я как-то могу "включить" эту функцию сглаживания для своих рисований на канвасе? П.С. На картинках очень большая разница, может у вас браузер сглаживает или масштабирует? |
||||||||
29 авг 19, 17:25 [21960027] Ответить | Цитировать Сообщить модератору |
asviridenkov Member Откуда: Сообщений: 4020 |
Я уже писал, GDI+ или Direct2D |
||
29 авг 19, 17:36 [21960036] Ответить | Цитировать Сообщить модератору |
Андрей Игоревич Member Откуда: Сообщений: 319 |
Ладно, обойдусь пока без сглаживания... :) |
||||||
29 авг 19, 18:06 [21960055] Ответить | Цитировать Сообщить модератору |
stanilar Member Откуда: Спб Сообщений: 886 |
Вроде у вин-контролов есть процедура, в котором они сами себя нарисовать могут. Можно самому алгоритм сглаживания написать. И не обязательно за пол года. Задача то сглаживать стрелочки? Такую, может быть, можно и из учебника скопипастить. |
||
29 авг 19, 19:13 [21960100] Ответить | Цитировать Сообщить модератору |
Андрей Игоревич Member Откуда: Сообщений: 319 |
Я вот совсем чуть поковырялся с наследниками TGraphicControl (ну для примера тот же Image или SpeedButton) и такой вопрос возник, как же его на передний план выносить выше панелей, это же по сути рисунки. В интернете предлагают способы которые опять перекрывает другие компоненты. Пока вот не могу придумать. Есть ли возможность создать какой-нибудь невидимый слой, которые не перекрывает компоненты? |
29 авг 19, 21:25 [21960146] Ответить | Цитировать Сообщить модератору |
DimaBr Member Откуда: Сообщений: 11947 |
Все ваши шестиугольники и стрелочки - TGraphicsControl, а ПОЛЕ на котором они в конечно итоге нарисованы - TWinControl. |
29 авг 19, 21:30 [21960150] Ответить | Цитировать Сообщить модератору |
Андрей Игоревич Member Откуда: Сообщений: 319 |
Я понимаю (это очевидно), но как я понял из написанного, мне предлагают отказаться от TWinControl использовав для рисования стрелок сразу TGraphicsControl на Форме/Большой Панели. Так как 3+ сотни TWinControl - это плохо. Отказываться от панелей под шестигранники не хочется, они удобные. А вот как стрелочки поверх нарисовать без TWinControl под них пока не понял. |
||
29 авг 19, 21:41 [21960155] Ответить | Цитировать Сообщить модератору |
DimaBr Member Откуда: Сообщений: 11947 |
Что именно удобного ?
Графические Стрелочки могут быть нарисованы на Оконном контроле. Чтобы они были поверх шестиугольников, сами шестиугольники должны быть графическими. |
||||
29 авг 19, 21:52 [21960158] Ответить | Цитировать Сообщить модератору |
Андрей Игоревич Member Откуда: Сообщений: 319 |
Ну основное что на них будет несколько label и image (на котором буду рисовать другие картинки (не стрелочки, но вместе со стрелочками)), может потом ещё что-то буду добавлять из компонентов (там много всего разного в зависимости от загруженных данных). Которые я просто кинул на панель и дальше мне только саму панельку двигать и больше ни о чем не думать (в картинках примерах я показал что у меня всё двигается, перемещается и перетаскивается, маштабируется, сейчас сделано через взаимные связи координат). На что ещё можно кинуть другие компоненты и при этом, что бы можно было обрезать компонент по контуру (шестиугольник)? Ещё на панель удобно перетаскивать мышкой чрез предельно простые две строчки кода.
Я хочу, что бы была возможность навести/кликнуть на любое число/рисунок и увидеть дополнительную информацию, по сути у меня получилось почти всё, кроме треклятых стрелочек :). |
||||||||
29 авг 19, 22:38 [21960178] Ответить | Цитировать Сообщить модератору |
Андрей Игоревич Member Откуда: Сообщений: 319 |
Я тут подумал, что может не очень точно выразился в часть "не блокирует взаимодействие", то место где сами стрелки находятся, там можно и блокировать взаимодействие(это не очень важно), просто все доступные способы рисования стрелки блокируют не только контур стрелки, но и весь прямоугольник в который она вписана. В принципе я могу обрезать панель чуть шире стрелки и сделать её прозрачной, по крайней мере то ужасное обрезание лесенками не будет видно. Но это всё равно приведет у нескольким сотням ВиндКонтролов. |
29 авг 19, 22:48 [21960180] Ответить | Цитировать Сообщить модератору |
DimaBr Member Откуда: Сообщений: 11947 |
Зачем кидать какие то дополнительные контролы ? Не проще ли просто вывести текст и картинку поверх шестиугольника ?
Разве нельзя обработать клик по шестиугольнику ? |
||||
29 авг 19, 22:54 [21960181] Ответить | Цитировать Сообщить модератору |
DimaBr Member Откуда: Сообщений: 11947 |
Смотрите, какая есть заготовка !!! К сообщению приложен файл. Размер - 10Kb |
29 авг 19, 22:56 [21960183] Ответить | Цитировать Сообщить модератору |
Андрей Игоревич Member Откуда: Сообщений: 319 |
Ну я вначале это описал, всё можно, даже не просто можно, я как бы уже всё это сделал почти так (просто перехват координат и события реализовал сам, а не через компоненты). Сложно объяснить не углубляясь в суть отображаемых данных (а это долго), но панель с контролами просто банально удобнее как с алгоритмичесткой точки зрения (есть один компонент, который полностью самодостаточен, рисование, перемещение, вывод данных, обработку событий, вывод хинтов и т.п. всё можно реализовать внутри него, а я просто присваиваю параметры и всё), так и с точки зрения кода. Ну банально, вот хочу я переместить один шестиугольник (смотри картинки "примеры" в первом комментарии), в случае с панелькой я просто перемешаю её и как бы всё, больше ничего не надо, а в случае с компонентами надо их как-то связать (компоненты одного шестиугольника), перемещать совместно. Я попробую сделать как вы говорите, может там и не так всё сложно. Просто уж больно мне компонент- наследник панели понравился, ни тебе канвасы не нужны, ни какие-то дополнительные условия.
А что тут происходит? |
||||||||
29 авг 19, 23:18 [21960187] Ответить | Цитировать Сообщить модератору |
asviridenkov Member Откуда: Сообщений: 4020 |
Пока не захотите все это зуммировать |
||
29 авг 19, 23:28 [21960188] Ответить | Цитировать Сообщить модератору |
Андрей Игоревич Member Откуда: Сообщений: 319 |
А в чем подводные камни? Я планировал отключать видимость панели на которой они расположены (и всех своих компонентов), далее менять размеры панелей, "перевырезать" форму и опять включать. Хотя лейблы надо будет смещать, но относительные координаты просто на коэффициент помножить, не сложно, вроде. Если панели созданы и невидимы SetWindowRgn, вроде, быстро работает. |
||||
29 авг 19, 23:34 [21960189] Ответить | Цитировать Сообщить модератору |
DimaBr Member Откуда: Сообщений: 11947 |
|
|
30 авг 19, 00:04 [21960193] Ответить | Цитировать Сообщить модератору |
DimaBr Member Откуда: Сообщений: 11947 |
![]() |
30 авг 19, 00:14 [21960199] Ответить | Цитировать Сообщить модератору |
Андрей Игоревич Member Откуда: Сообщений: 319 |
Повторил, заменив текс на лейблы. В принципе рабочая схема. Но по факту - стрелки это рисунок который всё время надо перерисовывать. Ну и форма Пейнбокса таки квадрат в который что-то вписано, с соответсвующим перекрытием ![]() |
|||
30 авг 19, 11:41 [21960406] Ответить | Цитировать Сообщить модератору |
Квейд Member Откуда: Kyiv, Ukraine Сообщений: 5394 |
![]() |
|||||
30 авг 19, 12:07 [21960440] Ответить | Цитировать Сообщить модератору |
kealon(Ruslan) Member Откуда: Нижневартовск Сообщений: 6228 |
|
||
30 авг 19, 12:30 [21960471] Ответить | Цитировать Сообщить модератору |
Андрей Игоревич Member Откуда: Сообщений: 319 |
Понятно, просто тоже надо продумывать будет. А что у вас на гифке происходит?
Спасибо, попробую, не успел ещё с ней разобраться. Сообщение было отредактировано: 2 сен 19, 21:07 |
|||||||||
30 авг 19, 13:20 [21960515] Ответить | Цитировать Сообщить модератору |
Квейд Member Откуда: Kyiv, Ukraine Сообщений: 5394 |
Это пример того, о чем я говорил. Кадр со всеми элементами (линиями и якорями, за которые линии "цепляются") прорисовывается в буфере, затем целиком выводится на экран. Получается плавная анимация. В вашей задаче нужно реализовать подобный механизм. К сообщению приложен файл. Размер - 16Kb Сообщение было отредактировано: 2 сен 19, 21:09 |
||
30 авг 19, 13:29 [21960526] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] 3 4 5 вперед Ctrl→ все |
Все форумы / Delphi | ![]() |