Пришла в голову такая идея: скроллбар с линзой и с прогрессивной характеристикой.
Вокруг текущей позиции есть область увеличения, перемещение и клики мыши в её пределах вызывает более точное позиционирование.
Если мышь отвести за пределы линзы, то через некоторое время линза переместится под мышь.
Почему и для чего?
Во-первых, меня достало, что ворд и акробат стремительно прыгают по страницам.
Например, если в документе 1000 страниц, а высота вертикального скроллбара 500 пикселов, то при всём желании я не смогу попасть на нечётную страницу с первой попытки: субпиксельное наведение мыши невозможно.
В то же время, перелистывание физических толстых книг не затрудняет:
— мгновенно наугад открываю (примерно по толщине) — это как бы клик мышкой по скроллбару
— быстро перелистываю стопку соседних страниц — это как бы тяну с большой скоростью
— затем медленно и вдумчиво перелистываю постранично — это как бы тяну или кликаю в области линзы.
Линзу на скроллбаре (или на трекере — в общем-то, не принципиально) можно отображать
— во-первых, сменой шага засечек
— во-вторых, утолщением полоски
— в-третьих, светотенью
Вот примерно так (очень грубо, извините — не дизайнер).
Сразу же возник вопрос о математической стороне этого явления. Нужно отобразить пикселы на логические координаты и обратно.
Это некая кусочно-линейная функция или кусочный сплайн (возможно, с вертикальными участками, т.е. часть логических координат окажется в слепых зонах под линзой).
Переместим мышь от точки фокуса линзы в сторону. Было бы неплохо, чтобы после того, как линза переедет вслед за мышью, логическая координата под мышью осталась неизменной.
Подвигав мышь туда-сюда, мы можем замести семейством функций весь квадрат (диапазон_логических_координат)x(диапазон_пикселов). А вот этого не хочется.
Поэтому на повестке 4 пункта
— полезность
— юзабельность
— дизайн
— математика
Идея интересная и, на мой вкус, правильная (но не очень новая). Если я ошибаюсь, называется такая штука "рыбий глаз". К сожалению, сходу не ткну пальцем, где уже реализовано, но вроде как на Маке должны быть такие штуки.
Лично я вообще скроллбар (традиционного вида) считаю штукой не менее (точнее — существенно более) вредной, нежели TreeView
и активно собираю идеи на тему, чем его заменять. Сколлбар-"рыбий глаз" — достаточно интересная модификация (хотя на мой вкус — недостаточно радикальная ).
Ну а по поводу математики — это, имхо, McSeem2 должен быть в курсе
Здравствуйте, Кодт, Вы писали:
К>Поэтому на повестке 4 пункта К>- полезность К>- юзабельность К>- дизайн К>- математика
И еще один пункт, чтобы треугольнички для плавного перемещения находились вместе причем оба вверху и оба внизу, ну и настраивалось бы.
... << RSDN@Home 1.2.0 alpha rev. 605>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Ну а по поводу математики — это, имхо, McSeem2 должен быть в курсе
Это не такой простой вопрос. Проекция, эмулирующая оптическую линзу является практически бесполезной по той простой причине, что сама линза закрывает часть изображения — мы не видим, что находится между областью увеличения и самой линзой — есть некая слепая зона в виде кольца.
Я использую очень простой метод, позволяющий не терять "визуальный контакт". В некой окружности изображение просто масштабируется относительно центра. Вне окружности — раздвигается:
Здравствуйте, McSeem2, Вы писали:
ЗХ>>Ну а по поводу математики — это, имхо, McSeem2 должен быть в курсе
MS>Это не такой простой вопрос. Проекция, эмулирующая оптическую линзу является практически бесполезной по той простой причине, что сама линза закрывает часть изображения — мы не видим, что находится между областью увеличения и самой линзой — есть некая слепая зона в виде кольца. MS>Я использую очень простой метод, позволяющий не терять "визуальный контакт". В некой окружности изображение просто масштабируется относительно центра. Вне окружности — раздвигается.
по моему ты не совсем прав это ж не замена стандартному скролбару а тока некоторое его улучшение на случай большого объема скролинных данных. а вообще по моему такие контролы как стколбар уже настолько укоренились в созоании, что узеры врятли примут что-то иное
Здравствуйте, sluge, Вы писали:
S>по моему ты не совсем прав это ж не замена стандартному скролбару а тока некоторое его улучшение на случай большого объема скролинных данных. а вообще по моему такие контролы как стколбар уже настолько укоренились в созоании, что узеры врятли примут что-то иное
Не говори речей призывающих отказаться от изменения привычного, ибо карающая длань Зверька настигнет тебя неотвратимо.
Когда ты перестаешь изменять мир — он начинает изменять тебя! (Мао Цзе Дун)
Здравствуйте, McSeem2, Вы писали:
ЗХ>>Ну а по поводу математики — это, имхо, McSeem2 должен быть в курсе
MS>Это не такой простой вопрос. Проекция, эмулирующая оптическую линзу является практически бесполезной по той простой причине, что сама линза закрывает часть изображения — мы не видим, что находится между областью увеличения и самой линзой — есть некая слепая зона в виде кольца. MS>Я использую очень простой метод, позволяющий не терять "визуальный контакт". В некой окружности изображение просто масштабируется относительно центра. Вне окружности — раздвигается:
Твоя линейка всего лишь увеличивает изображение, но не влияет на точность позиционирования.
Этак меня и ворд устраивал бы (он выдаёт подсказку с номером текущей страницы), беда в том, что если пикселов меньше, чем логических позиций, то такой способ не позволит прицелиться.
MS>Математика тривиальна:
Не... как линзу нарисовать — это вопрос простой. Я же имел в виду следующее.
Есть пространство экранных координат (x) и логических координат (y).
Линейка с линзой (фокус которой в точке x0, ещё какие-то параметры p0) определяется как функция
ruler: (xf,p) -> x->y
Когда мы отводим мышку в точку x1, выбирается точка y1 = ruler(x0,p0)(x1) = ruler1(x1,p1).
(Обрати внимание: в этом отличие моей задумки от твоей или MacOS'овской менюшки).
Сразу же:
— Лепо ли, если функция окажется не сюръективна, то есть, что не все точки y достижимы при данных параметрах?
В принципе, лепо: после того, как фокус уплывёт за мышкой, параметры изменятся и точки станут доступны.
— Фокус перемещается за мышкой. Новая линейка ruler(x1,p1) = ruler1.
Было бы полезно, чтобы ruler1(x1) == y1, то есть, если мы более не двигаем мышку, линейка не совершает скролл. (1)
Так вот, получается, что
ruler(x0,p0)(x1) = ruler(x1,p1)(x1);
ruler(x1,p1)(x1) = ruler(x2,p2)(x2);
......
и, если ruler не линейная, то получается, что семейство функций заметает неслабую часть квадрата X*Y.
Если p0==p1==..., то есть ruler параметризован только фокусом, то условие (1) недостижимо в принципе.
А некоторые наивные способы — приводят к тому, что каждое движение линзы за мышкой всё более и более удаляет функцию от диагонали. Это тоже неправильно.
Может быть, после увода мышки с контрола функция может релаксировать, при этом xf смещается так, чтобы текущая логическая позиция y оставалась в фокусе, а параметр был "исходным": ? xf : ruler(xf,p0)(xf) = y
Но такое движение тоже может удивить пользователя.
Здравствуйте, Кодт, Вы писали:
К>Пришла в голову такая идея: скроллбар с линзой и с прогрессивной характеристикой.
К>Вокруг текущей позиции есть область увеличения, перемещение и клики мыши в её пределах вызывает более точное позиционирование. К>Если мышь отвести за пределы линзы, то через некоторое время линза переместится под мышь.
К>Почему и для чего?
К>Во-первых, меня достало, что ворд и акробат стремительно прыгают по страницам. К>Например, если в документе 1000 страниц, а высота вертикального скроллбара 500 пикселов, то при всём желании я не смогу попасть на нечётную страницу с первой попытки: субпиксельное наведение мыши невозможно.
А что если сделать вплотную стоящие два скроллбара, один грубый, другой точный?
Здравствуйте, Hydrogen, Вы писали:
К>>Во-первых, меня достало, что ворд и акробат стремительно прыгают по страницам. К>>Например, если в документе 1000 страниц, а высота вертикального скроллбара 500 пикселов, то при всём желании я не смогу попасть на нечётную страницу с первой попытки: субпиксельное наведение мыши невозможно.
H>А что если сделать вплотную стоящие два скроллбара, один грубый, другой точный?
Да, я уже подумал: чем дальше от одного края к другому, тем точнее прицел.
То есть, задвинув мышку в позицию (x0,y), которой соответствует логическая позиция p0 (будем полагать, что скроллбар горизонтальный), её дальнейшее перетягивание в позицию (x0+dx,y) истолкуем как p0+dx*m(y) где m — масштабный коэффициент, зависящий от "глубины".
Здравствуйте, Кодт, Вы писали:
К>Да, я уже подумал: чем дальше от одного края к другому, тем точнее прицел.
Так же подумал, но потом вспомнил, что есть же фигня ... в общем, когда мышкой в ворде колесико кликаешь, включается режим, и с его помошью уже можно точнее передвигаться.