Да, не думал, что так круто будет, спасибо.
Рисованный интерфейс программы
Сообщений 61 страница 90 из 302
Поделиться6225.04.2012 19:19:37
Привет. Может кто-нубудь помочь заставить вращатся регуляторы?
Поделиться6325.04.2012 19:47:55
Проще будет с точкой, а не с линией, т. к. линию нужно не только перемещать, но и изменять ее угол наклона.
И в архиве нет рисунка Light_Down.png.
Поделиться6526.04.2012 15:56:08
Может кто-нубудь помочь заставить вращатся регуляторы?
Есть у кого-нибудь идеи? Гугл пока не помог.
Поделиться6626.04.2012 16:23:09
Есть у кого-нибудь идеи?
Нужно время....
Поделиться6726.04.2012 16:26:30
Понял, отстал.
Поделиться6826.04.2012 18:21:28
Есть у кого-нибудь идеи?
Как-то так. http://ifolder.ru/30156725
Только нужно картинку Knob.png заменить на что-то более подходящее с такими же размерами, но с другим дизайном. Думаю что хорошо будет смотреться картинка в виде небольшой ямки, немного ярче чем сам регулятор (можно также добавить тени) с красной точкой в центре.
Поделиться6926.04.2012 19:10:08
Спасибо.
Поделиться7027.04.2012 20:01:26
Привет.
Можно ли ограничить вращение регуляторов крайними точками?
Что-то не могу добавить курсор над регуляторами. Если правильно понял, то добавлять курсор надо в Procedure KnobGadgetCB(hWnd, Msg, lParam, wParam).
Поделиться7127.04.2012 22:53:01
Можно ли ограничить вращение регуляторов крайними точками?
Можно например сравнивать угол поворота с предыдущим и так вычислять произошло вращение по часовой стрелке или против часовой. В зависимости от результата уже принимать решение, повернуть регулятор или нет. Все это нужно делать в процедуре KnobPos(). http://rghost.ru/37803072
Поделиться7228.04.2012 14:48:38
Спасибо, то что надо.
Поделиться7328.04.2012 21:25:45
Можно ли ограничить перемещение регулятора от мин. до макс. значения не по ходу вращения?
Попробовал изменить максимальное значение в Procedure KnobGadget(Gadget, x, y, w, h, ImageID, min=0, Max=60). Максимальное значение все равно 100.
Что-то не могу понять, где нужно поменять значения, чтобы радиус вращения увеличить.
Поделиться7428.04.2012 21:40:38
Procedure KnobGadget(Gadget, x, y, w, h, ImageID, min=0, Max=60).
Цифры в последних двух аргументах (справа) это значения по умолчанию если они не указаны при вызове процедуры. Изменять нужно не здесь, а при вызове KnobGadget из кода.
Поделиться7528.04.2012 21:56:09
Это помогло, спасибо.
Поделиться7630.04.2012 15:54:52
Можно ли ограничить перемещение регулятора от мин. до макс. значения не по ходу вращения?
Что-то не могу понять, где нужно поменять значения, чтобы радиус вращения увеличить.
Поделиться7730.04.2012 22:54:08
Лучше покажи скрин как должно быть.
Смотри процедуру KnobPos().
Поделиться7801.05.2012 10:21:58
Лучше покажи скрин как должно быть.
Со скрином сложнее, попробую обьяснить: если нажать на мин. значение и перевести курсор на макс. значение, то точка "перепрыгнет". На настоящих ручках такого нет.
Смотри процедуру KnobPos().
Исправил в этой строчке AngleXY(*Knob\xCenter, *Knob\yCenter, Ang, *Knob\Size/3.14-14, @Pos) 14 на 44, радиус изменился, но теперь верх поменялся с низом.
Отредактировано max (01.05.2012 10:31:55)
Поделиться7901.05.2012 11:15:42
Со скрином сложнее, попробую обьяснить: если нажать на мин. значение и перевести курсор на макс. значение, то точка "перепрыгнет". На настоящих ручках такого нет.
Это уже сложнее.
Нужно искать алгоритм работы настоящих ручек.
Исправил в этой строчке AngleXY(*Knob\xCenter, *Knob\yCenter, Ang, *Knob\Size/3.14-14, @Pos) 14 на 44, радиус изменился, но теперь верх поменялся с низом.
В процедуре KnobPos() должны быть такие строки:
AngleXY(*Knob\xCenter, *Knob\yCenter, Ang, *Knob\Size/3.14-8, @Pos) ResizeGadget(*Knob\KnobID, Pos\x-8, Pos\y-8, #PB_Ignore, #PB_Ignore)
В процедуре KnobGadget() такие же.
Создавать нужно с такими позициями (X, Y):
KnobGadget(10,18,98,88,88,ImageID(#Knob_pointer_White_Long), -12, 112) KnobGadget(11,336,98,88,88,ImageID(#Knob_pointer_White_Long), -12, 112)
Поделиться8001.05.2012 11:59:52
Это уже сложнее.
Нужно искать алгоритм работы настоящих ручек.
Думаю, что надо ограничить передвижение по Х в мин. и макс. значениях.
Все остальное нормально.
Поделиться8101.05.2012 12:57:11
Понужнилось добавить несколько кнопок с фиксацией и без. Без фиксации сделал так же, как и здесь:
ButtonImage(13, 405,0,38,38, 0, ImageID(#Light_Down_Enable), ImageID(#Hide))
Все работает как надо. Можно ли на основе Procedure ButtonImage_CB и Procedure ButtonImage сделать с фиксацией?
И еще заметил, что при наведении курсора на кнопку "Hide" рука не появляется, а появляется торлько при нажатии.
Отредактировано max (01.05.2012 13:01:00)
Поделиться8201.05.2012 21:40:21
Можно ли на основе Procedure ButtonImage_CB и Procedure ButtonImage сделать с фиксацией?
Можно, но нужно немного изменить код.
заметил, что при наведении курсора на кнопку "Hide" рука не появляется, а появляется торлько при нажатии.
Нужно сделать как с остальными кнопками. Определять что мышь на кнопке и менять курсор.
Поделиться8301.05.2012 23:04:07
Нужно сделать как с остальными кнопками. Определять что мышь на кнопке и менять курсор.
Это как здесь?
ButtonIm(G_ButtonInfo\Pause\State, G_ButtonInfo\Pause\MouseOver, 0, #Light_Button_Enable)
Поделиться8402.05.2012 13:15:56
Это как здесь?
Да.
В структуру ImButtons нужно будет добавить поля, связанные с этими кнопками и указывать их при вызове макроса.
Но для кнопки "Hide" можно сделать по проще. Найти в процедуре ButtonImage_CB() обработку #WM_MOUSEMOVE и добавить туда строку SetCursor_(IDC_HAND).
А в начало процедуры, строку Shared IDC_HAND.
И еще, в той процедуре есть строка:
MessageRequester("", "Клик по гаджету с ID "+Str(*Button_Image\Gadget), #MB_OK)
Ее нужно убрать от туда.
Поделиться8502.05.2012 13:22:25
Ее нужно убрать от туда.
Заметил, убрал.
Поделиться8602.05.2012 13:36:39
Но для кнопки "Hide" можно сделать по проще. Найти в процедуре ButtonImage_CB() обработку #WM_MOUSEMOVE и добавить туда строку SetCursor_(IDC_HAND).
А в начало процедуры, строку Shared IDC_HAND.
Добавил и при наведении на все добавленные кнопки рука появляется. Пытался разобраться в Procedure ButtonImage_CB и Procedure ButtonImage, чтобы сделать фмксируемые кнопки, но что-то ни как. Можно рассказать, что к чему?
Поделиться8702.05.2012 14:18:23
Пытался разобраться в Procedure ButtonImage_CB и Procedure ButtonImage, чтобы сделать фмксируемые кнопки, но что-то ни как. Можно рассказать, что к чему?
Для того чтобы можно было бы создавать фиксируемые и не фиксируемые кнопки, нужно это как-то обозначить - добавить флаг, наличие которого будет означать что кнопка фиксируемая. А иначе программа просто не узнает какая это кнопка.
http://pure-basic.narod.ru/forum/ButtonIm_1.rar
Две кнопки с фиксацией, а две без.
Вообще, можно при создании кнопки указывать используемый курсор (нужно реализовать).
Поделиться8802.05.2012 15:01:05
Теперь как надо, спасибо.
Поделиться8902.05.2012 16:29:46
Поискав в нете рисованный TrackBarGadget нашел только Раскрашенный TrackBarGadget, но он не подходит: нет "подсветки" при наведении курсора, бегунок у всех TrackBarGadget одинаковый, нет возможности сделать вертикальный TrackBarGadget. Можно ли доработать код под мои нужды? Или нужно делать что-то типа Procedure ButtonImage_CB и Procedure ButtonImage? в архиве Раскрашенный TrackBarGadget и мои фаылы.
Поделиться9002.05.2012 17:37:48
Можно ведь самому нарисовать - сделать из ImageGadget'а или CanvasGadget'а.
Похожие темы
Рисованный интерфейс FM | OpenSource | 27.04.2010 |
Фон | Вопросы по PureBasic | 16.03.2014 |
(Статья) Создаем VSM-модель для протеуса (DLL библиотека) | PureBasic для Windows | 17.04.2014 |
Перевод книги "PureBasic - A Beginners Guide" | Материалы сайта | 04.05.2016 |