PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Рисованный интерфейс программы


Рисованный интерфейс программы

Сообщений 61 страница 90 из 302

61

Да, не думал, что так круто будет, спасибо.

0

62

Привет. Может кто-нубудь помочь заставить вращатся регуляторы?

0

63

Проще будет с точкой, а не с линией, т. к. линию нужно не только перемещать, но и изменять ее угол наклона.

И в архиве нет рисунка Light_Down.png.

0

64

Поправил.

0

65

max написал(а):

Может кто-нубудь помочь заставить вращатся регуляторы?

Есть у кого-нибудь идеи? Гугл пока не помог.

0

66

max написал(а):

Есть у кого-нибудь идеи?

Нужно время....

0

67

Понял, отстал. :)

0

68

max написал(а):

Есть у кого-нибудь идеи?

Как-то так. http://ifolder.ru/30156725
Только нужно картинку Knob.png заменить на что-то более подходящее с такими же размерами, но с другим дизайном. Думаю что хорошо будет смотреться картинка в виде небольшой ямки, немного ярче чем сам регулятор (можно также добавить тени) с красной точкой в центре.

+1

69

Спасибо.

0

70

Привет.
Можно ли ограничить вращение регуляторов крайними точками?
Что-то не могу добавить курсор над регуляторами. Если правильно понял, то добавлять курсор надо в Procedure KnobGadgetCB(hWnd, Msg, lParam, wParam).

0

71

max написал(а):

Можно ли ограничить вращение регуляторов крайними точками?

Можно например сравнивать угол поворота с предыдущим и так вычислять произошло вращение по часовой стрелке или против часовой. В зависимости от результата уже принимать решение, повернуть регулятор или нет. Все это нужно делать в процедуре KnobPos(). http://rghost.ru/37803072

+1

72

Спасибо, то что надо.

0

73

Можно ли ограничить перемещение регулятора от мин. до макс. значения не по ходу вращения?
Попробовал изменить максимальное значение в Procedure KnobGadget(Gadget, x, y, w, h, ImageID, min=0, Max=60). Максимальное значение все равно 100.
Что-то не могу понять, где нужно поменять значения, чтобы радиус вращения увеличить.

0

74

max написал(а):

Procedure KnobGadget(Gadget, x, y, w, h, ImageID, min=0, Max=60).

Цифры в последних двух аргументах (справа) это значения по умолчанию если они не указаны при вызове процедуры. Изменять нужно не здесь, а при вызове KnobGadget из кода.

0

75

Это помогло, спасибо.

0

76

Можно ли ограничить перемещение регулятора от мин. до макс. значения не по ходу вращения?
Что-то не могу понять, где нужно поменять значения, чтобы радиус вращения увеличить.

0

77

Лучше покажи скрин как должно быть.
Смотри процедуру KnobPos().

0

78

Пётр написал(а):

Лучше покажи скрин как должно быть.

Со скрином сложнее, попробую обьяснить: если нажать на мин. значение и перевести курсор на макс. значение, то точка "перепрыгнет". На настоящих ручках такого нет.

Пётр написал(а):

Смотри процедуру KnobPos().

Исправил в этой строчке AngleXY(*Knob\xCenter, *Knob\yCenter, Ang, *Knob\Size/3.14-14, @Pos) 14 на 44, радиус изменился, но теперь верх поменялся с низом.

Отредактировано max (01.05.2012 10:31:55)

0

79

max написал(а):

Со скрином сложнее, попробую обьяснить: если нажать на мин. значение и перевести курсор на макс. значение, то точка "перепрыгнет". На настоящих ручках такого нет.

Это уже сложнее.
Нужно искать алгоритм работы настоящих ручек.

max написал(а):

Исправил в этой строчке 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)

+1

80

Пётр написал(а):

Это уже сложнее.
Нужно искать алгоритм работы настоящих ручек.

Думаю, что надо ограничить передвижение по Х в мин. и макс. значениях.
Все остальное нормально.

0

81

Понужнилось добавить несколько кнопок с фиксацией и без. Без фиксации сделал так же, как и здесь:

Код:
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)

0

82

max написал(а):

Можно ли на основе Procedure ButtonImage_CB и Procedure ButtonImage сделать с фиксацией?

Можно, но нужно немного изменить код.

max написал(а):

заметил, что при наведении курсора на кнопку "Hide" рука не появляется, а появляется торлько при нажатии.

Нужно сделать как с остальными кнопками. Определять что мышь на кнопке и менять курсор.

0

83

Пётр написал(а):

Нужно сделать как с остальными кнопками. Определять что мышь на кнопке и менять курсор.

Это как здесь?

Код:
ButtonIm(G_ButtonInfo\Pause\State, G_ButtonInfo\Pause\MouseOver, 0, #Light_Button_Enable)

0

84

max написал(а):

Это как здесь?

Да.
В структуру ImButtons нужно будет добавить поля, связанные с этими кнопками и указывать их при вызове макроса.

Но для кнопки "Hide" можно сделать по проще. Найти в процедуре ButtonImage_CB() обработку #WM_MOUSEMOVE и добавить туда строку SetCursor_(IDC_HAND).
А в начало процедуры, строку Shared IDC_HAND.

И еще, в той процедуре есть строка:

Код:
MessageRequester("", "Клик по гаджету с ID "+Str(*Button_Image\Gadget), #MB_OK)

Ее нужно убрать от туда.

0

85

Пётр написал(а):

Ее нужно убрать от туда.

Заметил, убрал.

0

86

Пётр написал(а):

Но для кнопки "Hide" можно сделать по проще. Найти в процедуре ButtonImage_CB() обработку #WM_MOUSEMOVE и добавить туда строку SetCursor_(IDC_HAND).
А в начало процедуры, строку Shared IDC_HAND.

Добавил и при наведении на все добавленные кнопки рука появляется. Пытался разобраться в Procedure ButtonImage_CB и Procedure ButtonImage, чтобы сделать фмксируемые кнопки, но что-то ни как. Можно рассказать, что к чему?

0

87

max написал(а):

Пытался разобраться в Procedure ButtonImage_CB и Procedure ButtonImage, чтобы сделать фмксируемые кнопки, но что-то ни как. Можно рассказать, что к чему?

Для того чтобы можно было бы создавать фиксируемые и не фиксируемые кнопки, нужно это как-то обозначить - добавить флаг, наличие которого будет означать что кнопка фиксируемая. А иначе программа просто не узнает какая это кнопка.
http://pure-basic.narod.ru/forum/ButtonIm_1.rar
Две кнопки с фиксацией, а две без.

Вообще, можно при создании кнопки указывать используемый курсор (нужно реализовать).

+1

88

Теперь как надо, спасибо.

0

89

Поискав в нете рисованный TrackBarGadget нашел только Раскрашенный TrackBarGadget, но он не подходит: нет "подсветки" при наведении курсора, бегунок у всех TrackBarGadget одинаковый, нет возможности сделать вертикальный TrackBarGadget. Можно ли доработать код под мои нужды? Или нужно делать что-то типа Procedure ButtonImage_CB и Procedure ButtonImage? в архиве Раскрашенный TrackBarGadget и мои фаылы.

0

90

Можно ведь самому нарисовать - сделать из ImageGadget'а или CanvasGadget'а.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Рисованный интерфейс программы