Для чего служит горизонтальная полоса прокрутки
Графические интерфейсы V: Вертикальная и горизонтальная полоса прокрутки (Глава 1)
Содержание
Введение
В предыдущих статьях серии о графических интерфейсах в среде торговых терминалов MetaTrader были рассмотрены основные части разрабатываемой библиотеки, а также созданы несколько элементов интерфейса: главное меню, контекстное меню, строка состояния, кнопки, группы кнопок, всплывающие подсказки. Пятую часть серии посвятим таким элементам управления, как полоса прокрутки и список. В первой главе напишем классы для создания вертикальной и горизонтальной полос прокрутки. Во второй главе разработаем составной элемент интерфейса «Список». Составным он является, потому что полоса прокрутки будет его частью, поэтому начнём именно с неё.
Элемент «Полоса прокрутки»
Полосы прокрутки используются в различных списках или таблицах, когда весь набор представляемых данных не помещается в обозначенную область. Основные объекты полосы прокрутки — кнопки для смещения массива данных на один шаг и ползунок, с помощью которого можно быстро смещать данные, перетаскивая их, зажав левой кнопкой мыши.
Собирать полосу прокрутки мы будем из пяти графических объектов.
Рис. 1. Составные части элемента управления «Полоса прокрутки».
Так как полоса прокрутки может быть двух типов (вертикальная и горизонтальная), то удобнее сделать для каждого типа отдельный класс. Это будут производные классы для отражения уникальных особенностей каждого типа полосы прокрутки.
Базовым классом для них станет (CScroll), в котором должны содержаться общие для каждого типа поля и методы. Все три класса поместим в один файл Scrolls.mqh. Схема для элемента управления «Полоса прокрутки» тогда будет выглядеть так:
Рис. 2. Схема элемента управления «Полоса прокрутки».
Далее рассмотрим процесс разработки базового класса этого элемента управления (CScroll).
Базовый класс элемента
Элемент управления «Полоса прокрутки» не является самостоятельным элементом графического интерфейса. Это вспомогательный элемент, и его нужно будет подключать к другим элементам, для которых может понадобиться перемещение данных в рабочей области. Поэтому файл Scrolls.mqh не нужно подключать напрямую к файлу WndContainer.mqh. Классы полосы прокрутки будут доступны в библиотеке через подключение к файлам с классами других элементов.
Создайте класс CScroll в файле Scrolls.mqh со стандартными для всех элементов интерфейса методами:
Как уже было сказано ранее, сделаем так, чтобы была возможность произвести точную настройку внешнего вида полосы прокрутки. Для этого в базовом классе (CScroll) создадим поля и методы, с помощью которых можно установить следующие параметры объектов элемента:
Ширина для других объектов полосы прокрутки (внутренняя область и ползунок) будет рассчитываться автоматически относительно ширины общего фона. Длина тоже будет рассчитываться автоматически, так как этот параметр зависит от количества пунктов в списке и их размера по оси Y. О том, как это будет реализовано, читайте далее в статье.
Также от типа полосы прокрутки зависят расчёты и определения значений таких параметров, как: (1) координаты, (2) длина области перемещения ползунка и (3) размеры. Эта часть выделена синим маркером в листинге кода ниже.
При создании графического объекта, который будет выступать в качестве ползунка полосы прокрутки, понадобится метод для расчёта его длины. Этот параметр (длина) зависит от количества пунктов в списке и от количества пунктов в видимой его части. Создадим такой метод и назовём его CScroll::CalculateThumbSize().
В самом начале этого метода стоит проверка на размер области для перемещения ползунка. Если длина этой области меньше минимальной длины ползунка, то расчёт производить не нужно. Метод вернёт false, и ползунок создан не будет, так как при таких условиях он просто не нужен. Если же проверка пройдена, то далее расчёт производится в несколько этапов:
Подробнее с кодом метода CScroll::CalculateThumbSize() можно ознакомиться в листинге ниже:
Другие методы создания объектов полосы прокрутки предлагаются для самостоятельного изучения в приложенном к статье файле.
Для определения состояния левой кнопки мыши относительно ползунка полосы прокрутки создадим перечисление ENUM_THUMB_MOUSE_STATE в файле Enums.mqh.
Кроме этого, нужно создать и соответствующие поля и методы. Метод CScroll::CheckMouseButtonState() нужен для определения того, над какой областью была зажата левая кнопка мыши. Метод CScroll::ZeroThumbVariables() используется для обнуления переменных, связанных с перемещением ползунка и вызывается в методе CScroll::CheckMouseButtonState() по условию, когда левая кнопка мыши отжата.
Для изменения цвета объектов полосы прокрутки в зависимости от местоположения курсора мыши и состояния её левой кнопки, создадим метод CScroll::ChangeObjectsColor(). В самом начале этого метода стоит проверка на то, заблокирована ли форма и отличаются ли идентификаторы полосы прокрутки и идентификатора, который сохранён в памяти формы. Если оба этих условия выполняются, то далее, в зависимости от текущего режима полосы прокрутки и фокуса над её кнопками, для них устанавливается соответствующее состояние. У полосы прокрутки может быть два режима: (1) — свободна и (2) — в процессе перемещения ползунка. После этого, в зависимости от местоположения курсора и того, в какой области была зажата левая кнопка мыши, для ползунка полосы прокрутки устанавливается соответствующий цвет. Здесь же определяется и режим полосы прокрутки.
При разработке элементов интерфейса, в которых будет использоваться полоса прокрутки, понадобятся методы для получения имён и состояний её кнопок. Кроме этого, нужны методы для установки и определения состояния перемещения ползунка полосы прокрутки и его текущей позиции относительно списка, к которому он присоединён.
Разработка базового класса полосы прокрутки завершена. Далее мы займёмся наполнением производных классов этого элемента управления.
Производные классы элемента
Если базовый класс полосы прокрутки наполнен общими методами для создания объектов, настройки параметров и получения их значений, то производные классы предназначены для управления этим элементом. Ранее мы уже создали производные классы CScrollV и CScrollH в файле Scrolls.mqh. Рассмотрим методы только одного из них — вертикального типа (CScrollV). Во втором (CScrollH) будет всё то же самое, но с поправкой на то, что это горизонтальный тип, а именно: если в классе вертикальной полосы прокрутки ведётся работа с координатой Y, то в классе горизонтального типа этого элемента ведётся работа с координатой X.
Сначала рассмотрим код методов CScrollV::OnDragThumb() и CScrollV::UpdateThumb(), предназначенных для перемещения ползунка полосы прокрутки. Объявить их нужно в приватной секции класса, поскольку использоваться они будут только внутри класса CScrollV.
В листинге ниже можно подробнее изучить код метода CScrollV::UpdateThumb(). В него передаётся рассчитанная в методе CScrollV::OnDragThumb() координата Y. Здесь она проверяется на корректность. Если окажется, что мы выходим за пределы рабочей области, предназначенной для перемещения ползунка, то значения корректируются. Только после этого осуществляется обновление координат и их сохранение в полях базовых классов.
Нам понадобится ещё один приватный метод — для корректировки текущей позиции ползунка относительно его координаты Y. Назовём его CScrollV::CalculateThumbPos(), с его кодом можно ознакомиться в листинге ниже.
Теперь создадим публичный метод CScrollV::ScrollBarControl() для управления ползунком, в котором будут вызываться все приватные методы, представленные выше. Его нужно будет вызывать в обработчиках событий OnEvent() тех элементов, где будет использоваться полоса прокрутки. К подробному примеру, как это будет работать, вернёмся во второй главе, в которой будет рассматриваться класс для создания элемента управления «Список».
Ниже представлен код метода CScrollV::ScrollBarControl(). В качестве аргументов ему передаются координаты курсора и состояние левой кнопки мыши. В самом начале проверяется фокус над ползунком полосы прокрутки. Затем определяется, над какой областью было произведено зажатие левой кнопки мыши. В зависимости от местоположения курсора и состояния левой кнопки, изменяется цвет ползунка. После этого, если управление передано полосе прокрутки, ползунок смещается по новой рассчитанной координате Y, и уже относительно нее рассчитывается номер позиции в списке.
Если метод CScrollV::CalculateThumbPos() преобразует координату Y в номер позиции в списке, то, помимо прочих, нам понадобится метод, который делает обратное преобразование, то есть, для расчёта координаты Y относительно текущей позиции ползунка. Здесь также стоят проверки на выход из рабочей области и корректировка в случае выхода. В самом конце метода координаты и отступы объекта обновляются.
Вызываться метод CScrollV::CalculateThumbY() будет в методах обработки нажатия на кнопках полосы прокрутки (см. листинг кода ниже). В методы CScrollV::OnClickScrollInc() и CScrollV::OnClickScrollDec() в качестве единственного аргумента передаётся имя объекта. В самом начале проверяются следующие параметры.
На этом разработка всех методов, необходимых для управления вертикальной полосой прокрутки, закончена. Для горизонтального типа методы аналогичны, различие состоит только в том, что расчёты производятся с координатой X.
Заключение
В этой статье (первой главе пятой части) мы рассмотрели такие элементы управления, как вертикальная и горизонтальная полоса прокрутки. Во второй главе пятой части займёмся разработкой элемента графического интерфейса «Список». Количество пунктов списка может не помещаться в выделенное пространство, и именно для таких случаев нам понадобится элемент управления «Полоса прокрутки», который мы и разработали в этой статье.
Ниже вы можете загрузить к себе на компьютер весь материал пятой части серии, чтобы у Вас сразу была возможность протестировать, как всё это работает. Если у Вас возникают вопросы по использованию материала, предоставленного в этих файлах, то Вы можете обратиться к подробному описанию процесса разработки библиотеки в одной из статей в представленном списке ниже или задать вопрос в комментариях к статье.
Список статей (глав) пятой части:
Полосу прокрутки следует отличать от слайдера, который является еще одним визуально похожим, но функционально другим объектом. Ползунок используется для изменения значений, но не меняет отображение и не перемещает отображаемую область, как это делает полоса прокрутки.
Содержание
История и прогресс
В 1974 году перемещение курсора к левому краю при использовании Bravo изменило его форму на двунаправленную стрелку, чтобы обеспечить возможность прокрутки. Нажатие левой или верхней красной кнопки прокручивает содержимое вверх, а строка рядом с курсором перемещается в верхнюю часть окна. Нажатие правой или нижней синей кнопки прокручивает содержимое вниз, а строка в верхней части окна спускается до курсора. Удерживание средней желтой кнопки изменяет курсор на большой палец, позволяя перейти к этому проценту документа с индикатором текущего размещения.
В 1977 году Smalltalk включил стабильную полосу прокрутки в левой части окна фокуса. Щелчок по правой половине полосы прокрутки перемещает содержимое вверх, а левая половина перемещает содержимое вниз. Большой палец в центре панели можно было плавно перетаскивать и отображать процент видимого содержимого; первая пропорциональная полоса прокрутки.
В 1980 году в Interlisp была полоса прокрутки, которая появлялась в левой части окна, когда курсор перемещался влево. Заштрихованный большой палец панели показывает процент видимого содержимого и управляется средней кнопкой. Левая кнопка прокручивается вверх, чтобы переместить выбранное положение к верхнему краю окна, а правая кнопка прокручивается вниз, чтобы переместить верхний край окна в выбранное положение.
В 1983 году у Apple Lisa были стрелки, указывающие вверх и вниз, кнопки страниц и большой палец фиксированного размера.
В 1984 году у Macintosh был светло-серый прямоугольник с ползунком «ползунок», дорожкой «серая зона» и стрелками, указывающими в противоположных направлениях к контенту, который будет отображаться при нажатии соответствующей стрелки. Стрелки будут прокручивать отдельный блок при одном щелчке или автоматически повторять при непрерывном нажатии. Кнопки страниц были удалены, и вместо этого можно было щелкнуть по направляющей лифта, чтобы перейти к следующему разделу. При нажатии на большой палец, перетаскивание приведет его к этой конкретной точке, если перед отпусканием не будет сделано движение далеко за пределы полосы прокрутки, что приведет к отмене действия. Пустая полоса прокрутки отображалась, когда окно не было в фокусе или если весь документ был виден в окне.
Также в 1985 году Viewpoint использовала правую кнопку для перемещения содержимого по процентам или по окну, а не по страницам.
В 1988 году компания Open Look создала большой палец лифта со стрелками прямо на нем. Щелчок по дорожке, перемещаемой по страницам, и автоповтор толкает указатель. Кабельные анкеры размещались в начале и конце документа, а центр лифта можно было перетащить.
В 1989 году NeXT переместил полосу прокрутки обратно в левую часть окна. Большой палец был пропорционального размера со стрелками вместе внизу панели. Действия повторяются автоматически, а нажатие клавиши alt перемещает содержимое по окну. Большой палец можно было перетащить, и использование клавиши Alt во время перетаскивания замедляло его движение.
В 1997 году PalmPilot включал обычную полосу прокрутки, где текст выходил за границы экрана с использованием перетаскиваемого большого пальца и стрелок, которые можно было нажимать с помощью стилуса. Он также имел две физические кнопки для прокрутки вверх и вниз соответственно.
В 2001 году Mac OS X 10.0 использовала пропорциональный большой палец и перемещала обе кнопки со стрелками в нижнюю часть панели.
В 2007 году iPhone и iOS включали обычную полосу прокрутки в веб-браузере и других приложениях, хотя она была предназначена только для вывода и с ней нельзя было взаимодействовать. В контактах была предусмотрена полоса прокрутки букв для перехода по содержимому.
В 2011 году Mac OS X 10.7 удалила кнопки с конца панели и была разработана так, чтобы больше походить на полосу прокрутки iOS. В том же выпуске Mac OS X 10.7 Apple представила «естественную прокрутку», что означает, что экран перемещается в том же направлении, что и пальцы пользователя, когда они используют жест прокрутки двумя пальцами. Если пальцы пользователя перемещаются вверх по трекпаду, контент на странице поднимается вверх, позволяя пользователю читать контент дальше по странице, и наоборот.
В версии Microsoft Word для Mac 2015 года были введены исчезающие полосы прокрутки. Размещение в документе больше не было видно, когда указатель мыши находился за пределами области панели, даже если рассматриваемое окно было в фокусе. Цель этого изменения состояла в том, чтобы соответствовать стандартным методам проектирования Mac по скрытию полосы прокрутки, когда она не нужна немедленно для целей иерархии информации.
Применение
Перетаскивание пальцем
Исторически сложилось так, что перетаскивание большого пальца является традиционным способом управления полосой прокрутки. Переместив курсор на большой палец на экране, а затем нажав и удерживая, большой палец можно перетащить. Это часто делается с помощью трекпада или левой кнопки мыши на обычной мыши или сенсорной панели. Перемещение курсора при нажатии вниз перемещает ползунок полосы прокрутки для просмотра различных разделов страницы. В приложениях, родных для OS X 10.11 (и некоторых предыдущих версий OS X), полосы прокрутки не отображаются в пользовательском интерфейсе, пока пользователь не использует другой метод прокрутки, например прокрутку двумя пальцами или клавиши со стрелками. Следовательно, пользователь должен сначала выполнить прокрутку с помощью одного из этих методов, а затем переместить курсор на ползунок, где бы он ни появился.
В Microsoft Windows перемещение мыши слишком далеко от большого пальца при перетаскивании приведет к сбросу положения прокрутки на предыдущее.
Колесо прокрутки
Также можно использовать колесо прокрутки на обычной мыши. При перемещении колеса в нужном направлении содержимое перемещается в том же направлении. Большинство мышей имеют колеса прокрутки, которые прокручивают только вверх и вниз, но некоторые мыши содержат колеса прокрутки, которые позволяют пользователю прокручивать в любом направлении (вверх, вниз, влево или вправо), включая диагональные направления. При прокрутке вверх и вниз направление, в котором прокручивается страница в ответ на направление, в котором пользователь прокручивает колесо прокрутки, может различаться в зависимости от настроек прокрутки компьютера.
Клавиши со стрелками
Кнопки со стрелками на клавиатуре можно нажимать для прокрутки страницы вверх, вниз, влево или вправо. Этот метод прокрутки обычно приводит к очень медленной прокрутке экрана по сравнению с другими методами прокрутки. Нажатие кнопок со стрелками приведет к продолжению прокрутки страницы до тех пор, пока не будет достигнут один из пределов прокрутки.
Щелчок по желобу
По желобу над или под ползунком можно щелкнуть, чтобы сразу перейти к этой точке на странице, или постранично для многостраничного контента. После щелчка по желобу прокрутка начинается автоматически, а затем останавливается, как только большой палец достигает положения указателя мыши. Этот метод прокрутки быстрее, чем другие, и его лучше всего использовать, когда пользователю нужно прокрутить сразу много контента или когда пользователь знает, где именно на странице ему нужно прокрутить.
Экранные кнопки со стрелками
В BeOS экранные кнопки прокрутки для обоих направлений появляются на обоих концах полосы прокрутки. В некоторых программах Microsoft Office дополнительные кнопки ⏪ и ⏩ могут использоваться для постраничной навигации.
Различные кнопки мыши
Тачпад Windows
Кроме того, на некоторых компьютерах под управлением Windows есть механизм прокрутки сбоку сенсорной панели, как показано на рисунке. Чтобы использовать этот механизм, палец помещается в область прокрутки и перемещается вверх и вниз или влево и вправо для прокрутки страницы. Опять же, в зависимости от настроек прокрутки компьютера, перемещение пальца в определенных направлениях вдоль этих областей прокрутки может привести к различным соответствующим направлениям прокрутки.
Трекпад Mac
Альтернативные конструкции
Было предложено или реализовано множество вариантов традиционного дизайна и использования полосы прокрутки. Чтобы избежать ограничения видимости окна полосами прокрутки при сохранении функциональности, было предложено использовать программный трос (тонкая линия), связанный с перемещением указателя мыши по тросу. Точно так же полосу прокрутки можно разместить непосредственно внутри содержимого, где она будет полезна, как для уменьшения используемого пространства, так и для уменьшения необходимых перемещений указателя.
Включение визуальных и рабочих подсказок в область отображения полосы прокрутки может указать, какие направления позволяют прокручивать движение, а также какие взаимодействия с полосой прокрутки доступны. Это может быть пустое поле, сигнализирующее об окончании списка, отключении кнопок прокрутки и изменении цвета полосы прокрутки.
Некоторые полосы прокрутки включают в себя визуальный индикатор положения, который помогает определить, где действие прокрутки прошло или будет перемещаться в содержимом. Для многостраничного контента индикатор текущего номера страницы по сравнению с общим номером страницы может быть включен рядом с ползунком при прокрутке, а более широкие полосы прокрутки могут включать обзор всей страницы. В полосах прокрутки, подобных тем, которые используются в телефонных списках контактов, состоящих из букв алфавита, буква, соответствующая текущей области, может быть увеличена или выделена каким-либо образом. Хотя они стабильны и предоставляются приложением, некоторые приложения и поисковые системы позволяют использовать маркеры релевантности, предоставленные или добавленные пользователем. Они могут быть строго визуальными или могут автоматически останавливать действие на полосе прокрутки при достижении каждого маркера. Они могут быть подчеркнуты цветом или даже звуком, чтобы дополнительно помочь пользователю найти то, что ему нужно в контенте.
Одновременная 2D-прокрутка
В ОС RISC перетаскивание полосы прокрутки левой кнопкой мыши работает обычным образом, но перетаскивание правой кнопкой приводит к исчезновению указателя и одновременному манипулированию обеими полосами прокрутки. Многие операции с графическим интерфейсом пользователя в ОС RISC при щелчке правой кнопкой мыши выполняют связанные, но немного другие функции.
Настройка
WebKit также предоставляет множество псевдоклассов для изменения стиля полос прокрутки.
Полосы прокрутки также были улучшены для кодирования информации о записях списка. Например, в Google Chrome на вертикальной полосе прокрутки есть метки впадины, чтобы указать места в документе, где был найден конкретный поисковый запрос.
Ограничения и проблемы
Компьютерные грамотные пользователи часто знакомы с полосами прокрутки, но люди с ограниченными знаниями могут не понимать их интуитивно, особенно с учетом более поздних вариантов, без посторонней помощи. Независимо от грамотности, можно найти множество проблем с различными типами полос прокрутки и их взаимодействием. С точки зрения дизайна, если размер окна уже мал, видимая область содержимого будет еще больше уменьшена за счет наличия полосы прокрутки. В то время как некоторые недавно исчезнувшие полосы прокрутки помогают смягчить эту проблему, более традиционные не позволяют избежать ее, особенно когда присутствуют как горизонтальные, так и вертикальные полосы.
С точки зрения использования, многие общие проблемы связаны с точностью. Сопоставление полосы прокрутки и дисплея является линейным, поэтому точность использования зависит от размера содержимого. Тогда навигация по меньшему документу будет проще, чем по большому документу. Это также означает, что все части документа подчеркнуты одинаково, и важность каждой части не распознается с помощью полосы прокрутки.
Нечасто указывается, где в содержимом была достигнута прокрутка, если только действие прокрутки не остановлено для просмотра содержимого. Это затрудняет независимо от того, знает ли пользователь, что он ищет, или общую организацию контента. Те, у которых есть индикатор, ограничены предопределенными настройками видимости, количества и стиля. При попытке прокрутки при выполнении такого действия, как выделение, величина прокрутки может не соответствовать желаемой величине, выходить за рамки или предлагать пользователю изменить положение несколько раз. Перерегулирование также может произойти при попытке разместить рядом с верхом или низом отдельной страницы в большом наборе. Попытка регулировки небольшой прокрутки пользователем может привести к увеличению прокрутки, поскольку прокрутка активирует автоматическое действие, переходящее на следующую страницу.
Исследования
В отчете Уильяма Бакстона и Брэда Майерса за 1986 год были протестированы различные способы взаимодействия двумя руками, включая прокрутку, щелчок и изменение размера. В их исследовании щелчок и изменение размера выполнялись параллельно. В первом эксперименте участникам предлагалось выполнить задачу выбора / позиционирования, а во втором эксперименте участникам предлагалось выполнить сложную задачу навигации / выбора. Исследование показало, что пользователи могут выполнять эти задачи быстрее и параллельно, когда они используют обе руки, но не обязательно, когда они используют обе руки одновременно. Они также обнаружили, что чем более взаимосвязанными были задачи, которые пользователь выполнял каждой рукой, тем быстрее они выполняли задачи, которые их просили выполнить.
Полосы прокрутки
Полосы прокрутки (вертикальная и горизонтальная) используются для перемещения по содержимому документа (рис. 1.35). Чем больше документ и чем больше в нем страниц, тем меньше будет ползунок посередине полос прокрутки. Позиция ползунка позволяет определить, в каком месте документа сейчас находится пользователь – в начале, в конце или посередине.
Рис. 1.35. Полосы прокрутки в окне Microsoft Word
Для перемещения по документу при помощи полос прокрутки щелкните на ползунке одной из них левой кнопкой мыши и, удерживая кнопку мыши, перетяните ползунок на вертикальной полосе вверх или вниз, а на горизонтальной – вправо или влево. Вы также можете использовать для перемещения по документу кнопки в виде стрелок, которые располагаются по краям полос.
В нижней части вертикальной полосы прокрутки расположены дополнительные кнопки для навигации по документу (рис. 1.36). Кнопка в виде шарика определяет объект перехода. При ее нажатии открывается небольшое окно, позволяющее выбрать нужный объект (рис. 1.37). С помощью кнопок в виде стрелок можно переходить к предыдущему и следующему объектам выбранного типа.
Рис. 1.36. Управление навигацией по документу с вертикальной полосы прокрутки
Рис. 1.37. Меню, позволяющее выбрать объект перехода
Данный текст является ознакомительным фрагментом.
Продолжение на ЛитРес
Читайте также
Создание полосы навигации
Создание полосы навигации Напоследок создадим для наших Web-страниц нормальную полосу навигации. Сейчас она у нас слишком уж простенькая.Еще в главе 6 мы узнали, что полоса навигации может быть горизонтальной или вертикальной, может формироваться в одном абзаце, с помощью
Генерирование полосы навигации
Генерирование полосы навигации Теперь можно заняться кодом, генерирующим вложенные списки в полосе навигации.Снова откроем Web-страницу index.htm в Блокноте, если уже ее закрыли. Удалим весь HTML-код, формирующий пункты вложенных списков в полосе навигации, но оставим фрагмент,
Создание полосы навигации
Создание полосы навигации Напоследок создадим для наших Web-страниц нормальную полосу навигации. Сейчас она у нас слишком уж простенькая.Еще в главе 6 мы узнали, что полоса навигации может быть горизонтальной или вертикальной, может формироваться в одном абзаце, с помощью
Генерирование полосы навигации
Генерирование полосы навигации Теперь можно заняться кодом, генерирующим вложенные списки в полосе навигации.Снова откроем Web-страницу index.htm в Блокноте, если уже ее закрыли. Удалим весь HTML-код, формирующий пункты вложенных списков в полосе навигации, но оставим фрагмент,
Streaks (Полосы)
Streaks (Полосы) Создает вокруг ярких участков изображения яркие вертикальные и горизонтальные полосы (рис. 4.39). Рис. 4.39. Исходное изображение (слева) и пример использования фильтра Streaks (Полосы)
Глава 21 Создание газетной полосы
Глава 21 Создание газетной полосы Второй пример практической работы, который мы рассмотрим в этой главе, будет ориентирован на газетную верстку. В качестве образца возьмем не просто газетную полосу, а наиболее скучную и трудоемкую из возможных – полосу телепрограммы.
Окончательная верстка полосы
Окончательная верстка полосы Окончательная верстка полосы в нашем случае сведется к следующим операциям:• постановка на полосу служебной информации (например, колонтитулов);• наполнение полосы реальным текстом (настоящими программами телепередач, подбор настоящих
Результаты измерения полосы пропускания сообщений
Результаты измерения полосы пропускания сообщений В табл. А.2 приведены результаты измерений на компьютере Sparc под управлением Solaris 2.6, а на рис. А.1 — график этих результатов.Как мы и предполагали, полоса пропускания увеличивается с размером сообщения. Поскольку во многих
А.З. Измерение полосы пропускания: программы
А.З. Измерение полосы пропускания: программы В этом разделе приведены тексты трех программ, измеряющих полосу пропускания каналов, очередей сообщений Posix и System V. Результаты работы этих программ приведены в табл. А.2 и
Измерение полосы пропускания канала
Измерение полосы пропускания канала На рис. А.7 приведена схема описываемой программы. Рис. А.7. Схема программы измерения полосы пропускания каналаВ листинге А.1 приведен текст первой половины программы bw_pipe, измеряющей полосу пропускания канала.Листинг А.1. Функция main,
Измерение полосы пропускания очереди сообщений Posix
Измерение полосы пропускания очереди сообщений Posix В листинге А.5 приведена функция main программы, измеряющей полосу пропускания очереди сообщений Posix. Листинг А.6 содержит функции reader и writer. Эта программа устроена аналогично предыдущей, измерявшей полосу пропускания
Программа измерения полосы пропускания дверей
Программа измерения полосы пропускания дверей Программа измерения полосы пропускания интерфейса дверей сложнее, чем предыдущие, поскольку нам нужно вызвать fork перед созданием двери. Родительский процесс создает дверь и с помощью канала оповещает дочерний процесс о
Программа определения полосы пропускания Sun RPC
Программа определения полосы пропускания Sun RPC Поскольку вызовы процедур в Sun RPC являются синхронными, для них действует то же ограничение, что и для дверей (см. выше). В данном случае проще создать две программы (клиент и сервер), поскольку они создаются автоматически
Полосы прокрутки
Полосы прокрутки Полосы прокрутки (вертикальная и горизонтальная) используются для перемещения по содержимому документа (рис. 1.35). Чем больше документ и чем больше в нем страниц, тем меньше будет ползунок посередине полос прокрутки. Позиция ползунка позволяет
Управление полосой прокрутки
Управление полосой прокрутки При отображении большого текста пользователь может применять полосу прокрутки для перемещения по тексту. Разработчик может использовать сообщение WM_VScroll для программного управления полосой прокрутки. Например, можно использовать этот
4.4.3. Колесико для прокрутки
4.4.3. Колесико для прокрутки На современных мышах имеется колесико прокрутки, позволяющее прокручивать рабочую область документа. Листать страницы документа намного приятнее с помощью колесика, а не клавиш PageUp и