Войти
ФлеймФорумПрограммирование

ListBox и у него есть скроллер. Как узнать размер пипсика ?

#0
(Правка: 8:39) 8:32, 14 фев. 2019

Здравствуйте, мальчики !
Я не Иона :)))

Все. Надо писать серьезно.

Есть ListBox и у него есть скроллер (например вертикальный).
Как узнать размер пипсика(ползунка) скроллера ?
Вот я про него , который в низу.
Изображение

Я хочу рисовать его Directc2D DrawRectangle.
И мне надо знать размер.
Тем более он меняется когда в ListBox-e добавляют или удаляют текст.

Делаю свою стилизацию ListBox-a с помощью Direct2D.
Буду благодарен если кто находил статьи про рисование ListBox-a в Direct2D


#1
8:37, 14 фев. 2019

ronniko
>Здравствуйте, мальчики !
Воу, палехчи!

pipsickHeight = scrollBarHeight / listBoxItemCount;
#2
8:40, 14 фев. 2019

Там как то хитрее. Он уменьшается до какого то размера. А дальше не меняет размеры.

#3
8:41, 14 фев. 2019

ronniko
Ну задай минимальный размер и если вдруг он меньше чем нужно - корректируй.

#4
12:47, 14 фев. 2019

ronniko
> Буду благодарен если кто находил статьи про рисование ListBox-a в Direct2D
"Статьи для детей, сорцы - выбор мастеров"

https://github.com/vurtun/nuklear
https://github.com/andlabs/libui

#5
14:13, 14 фев. 2019

exchg
в nuklear походу никак не ограничивается, курсор хоть до нуля может ужаться. Жутко бесит такая фигня в гуи библиотеках.

#6
15:52, 14 фев. 2019

kipar
> в nuklear походу никак не ограничивается, курсор хоть до нуля может ужаться.
> Жутко бесит такая фигня в гуи библиотеках.
От лентяи. Но смысл был в том, что можно статьи не искать достаточно посмотреть на той же вики целый список не больших гуевых либ ну или тот-же вайн накрайняк.

А про нюклер жаль, как раз собираюсь его использовать.

#7
16:01, 14 фев. 2019

Я бы сделал пипсик квадратным с неизменной высотой, не пойму, на кой его вообще рисайзить.
Какой-то дебил однажды придумал и все бездумно взялись копировать его бредовую идею.

#8
16:32, 14 фев. 2019

nes
удобно же, сразу видно - на одну строчку содержимое не влезло, на 50% или на дофига. А с квадратным пока не проскроллишь не узнаешь, да и даже если проскроллишь не узнаешь (если там более-менее однородное содержимое) - то ли он на пять строчек от одного клика сместился то ли на 50.

#9
(Правка: 16:50) 16:50, 14 фев. 2019

kipar
Мерные линии, ака линейка, спасут атса.
А может и не сильно, если записей овер 1000, а пикселей в скроллбаре в разы меньше,
но и от уменьшения стика никакого толку.

#10
(Правка: 22:23) 22:22, 15 фев. 2019

nes
> Какой-то дебил однажды придумал и все бездумно взялись копировать его бредовую
> идею.
Возможно, проблема в том, что в одном элементе пытаются уместить два:
1. Элемент управления - ползунок за который можно ухватиться и переместить. А значит его размер не может быть меньше определенного (вы бы не захотели устройство, где на кнопки надо нажимать булавкой).
2. Элемент индикации - отображающий как положение, так и размер отображаемой области относительно всего текста/списка/и т.п. (и тут опять совмещение с конфликтом - положение трудно разглядеть при тоненькой полоске в большом списке)
Может рисовать один тип поверх другого (полупрозрачно)? Или ползунок будет выглядеть как "петелька" выступающая за пределы полосы? Или появляться при наведении мыши (тут в пролете тач-управление)?

#11
5:54, 16 фев. 2019

можно делать пипсик сразу маленьким(фиксированным) и сразу станет понятно зачем они так сделали потому что когда в списке пару элементов пипсик будет болтаться на всю вертикаль за минимальный скролл

#12
(Правка: 12:16) 12:14, 16 фев. 2019

только с 30 раза понял что тема не про размер "пиписька"

PS тоже ка кто в начале деятельности писал подмену оконному winapi на D3D9 ? API почти полностью имитировали оконные винапи, идея была что в любой программе можно было подменить стандартный API бемсшовно и получить интерфейс в зд . окна могли масштабироваться в 3 пространстве на 3д рабочем столе.

вы итоге весь функционал не реализовал, потому как у оконного апи интеграция с другими подсистемами была глубже чем хотелось, да и игродел начала затягивать больше а не это все)

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

ФлеймФорумПрограммирование