Виртуальная лупа с функциональными возможностями оперативного управления
Иллюстрации
Показать всеИзобретение относится к средствам, обеспечивающим выборочное увеличение части содержимого экранного дисплея. Техническим результатом является динамическое увеличение областей содержимого на экране дисплея. Лупа экрана дисплея может управляться пользователем для увеличения выбранных частей рабочего стола, в том числе окон, открытых на экране, за счет перемещения рамки лупы, в пределах которой представлено увеличенное изображение. Увеличенное изображение соответствует содержимому экрана, расположенному в пределах области увеличения, лежащей под рамкой лупы, увеличенному до установленного уровня. Лупой можно управлять с использованием устройства пользовательского ввода данных. По меньшей мере, один рабочий параметр лупы может быть отрегулирован без взаимодействия с экранными объектами и не убирая фокус ввода с рабочего стола или из каких-либо окон, открытых на экране. В отдельном варианте воплощения изобретения оперативная управляемость лупы включает в себя ее активацию и деактивацию, регулировку уровня увеличения и регулировку размера рамки лупы. 3 н. и 18 з.п. ф-лы, 13 ил.
Реферат
Часть раскрытия этого патентного документа содержит материал, который находится под защитой авторского права. Владелец авторского права не возражает против факсимильного воспроизведения любым лицом патентного документа или раскрытия сущности патента в том виде, в котором они представлены в реестре патентов или записях Бюро по патентам и товарным знакам, но в остальном полностью сохраняет все авторские права.
УРОВЕНЬ ТЕХНИКИ
Известны различные типы функциональных возможностей для увеличения и изменения масштаба изображения на экране компьютерного дисплея. В общем случае такие лупы показывают увеличенную копию части изображения, которое появляется на экране компьютера. Такие функциональные возможности были предоставлены в качестве специальных возможностей для пользователей со слабым зрением и в других целях в виде средств, обеспеченных в отдельной прикладной программе, а также в виде специализированного программного обеспечения, предназначенного для предоставления функциональных возможностей увеличения/изменения масштаба изображения, доступных для использования на уровне операционной системы (например, на рабочем столе) и в пользовательских приложениях. Для пользователей со слабым зрением такие средства могут помочь при чтении мелкого текста на экране и/или при различении значков и т.п. Более широко функциональные возможности увеличения и изменения масштаба изображения могут быть полезными в приложениях и на уровне операционной системы (например, на рабочем столе), когда может быть желательно увеличить все или часть объектов или изображений на экране.
Примером пользовательского приложения, обеспечивающего функциональные возможности изменения масштаба изображения, является программа Adobe Acrobat для чтения документов в формате .pdf. В дополнение к выбору уровня изменения масштаба изображения на стандартной инструментальной панели через всплывающее меню имеются три средства выбора отображаемого участка и масштаба изображения: Loupe Tool (инструментальное средство лупы), окно Pan & Zoom (выбора отображаемого участка и масштаба изображения), Dynamic Zoom Tool (инструментальное средство динамического изменения масштаба изображения).
С помощью средства Loupe Tool пользователь управляет уровнем масштаба изображения посредством бегунка и управляет позицией изменения масштаба изображения посредством щелчка мыши в пределах документа. Область с измененным масштабом представлена прямоугольником в документе, который по размеру обратно пропорционален уровню масштаба изображения; изображение с измененным масштабом показывается в отдельном окне. С помощью средства окна Pan & Zoom прямоугольник с изменяемыми размерами может перемещаться по странице документа, представленной в маленьком окне. Изображение документа, предоставленное на заднем плане, изменяет масштаб изображения и выбор отображаемого участка при изменении размера и перемещения прямоугольника. С помощью средства Dynamic Zoom изображение обычного курсора изменяется на изображение маленькой лупы, показывая, что был выполнен вход в режим изменения масштаба изображения. В этом режиме пользователь может щелкнуть мышью по документу и «тянуть» вверх/вниз, чтобы динамически увеличивать и уменьшать масштаб изображения, и может изменять область отображения на боковых краях документа.
В качестве дополнительного примера средства изменения масштаба изображения, предоставляемой в виде части пользовательской прикладной программы, программа Digital Image Pro предлагает набор элементов управления на панели инструментов, предоставляемой как часть окна для управления перемещением по изображениям. Они включают в себя бегунок для изменения уровня масштаба изображения, кнопку возврата к масштабу 100%, окно выбора области отображения и кнопку изменения масштаба изображения в соответствии с выбранной областью. Аналогично средству Pan & Zoom программы Adobe по изображению, представленному в маленьком окне, может перемещаться прямоугольник, размер которого обратно пропорционален выбранному уровню масштаба изображения. На заднем плане предоставляется увеличенное отображение части изображения в прямоугольнике.
Приложения обычно реализуют функциональные возможности изменения масштаба изображения с использованием ввода компьютерной мыши. Например, вращение колесика прокрутки на мыши совместно с нажатием клавиши CTRL на клавиатуре (CTRL + прокрутка) может позволить пользователям увеличивать и уменьшать масштаб изображения из приложений. Каждое приложение имеет свои собственные приращения для изменения масштаба изображения, и изменение масштаба изображения с помощью колесика прокрутки применяет эти приращения. Другие варианты изменения масштаба изображения находятся на панели управления программного обеспечения Microsoft IntelliPoint (для мыши), как показано на Фиг.4 предшествующего уровня техники. На вкладке Buttons (Кнопки) недавно были добавлены команды Zoom In (Увеличить масштаб изображения) и Zoom Out (Уменьшить масштаб изображения) как варианты для каждой кнопки мыши. Некоторые клавиатуры Microsoft имеют элемент управления масштабом изображения (например, "бегунок"), который работает под управлением программного обеспечения IntelliType™ от Microsoft.
По сравнению с программным обеспечением лупы, разработанным для использования на уровне операционной системы (на рабочем столе), при разработке средств увеличения и изменения масштаба изображения для отдельного пользовательского приложения имеется большая гибкость, поскольку приложение может быть "с нуля" построено для соответствия этим средствам. Кроме того, при использовании специфической для приложения лупы взаимодействие лупы с независимо исполняющимися программами и их соответствующими окнами не вызывает проблем. Изменение масштаба изображения легко достигается в приложении. У приложения имеется внутреннее представление информационного содержания, которое должно быть отображено, и если оно спроектировано правильно, оно может отобразить информационное содержание при различных размерах или уровнях масштаба изображения. В программе Word от Microsoft®, например, можно увеличивать масштаб изображения вплоть до того, что на экране показывается только несколько строк, при этом текст очень ясно читается, поскольку шрифты основаны на векторной графике (математические описания символов вместо растровых изображений).
Для лупы, которая выполнена общедоступной для использования с рабочим столом и с любыми другими открытыми окнами, то есть на уровне операционной системы (ОС,OS), внутреннее представление, которое приложение может иметь для функциональных возможностей изменения масштаба изображения, является недоступным. Вместо этого увеличение выполняется посредством манипуляции со снимком экрана или выводимым растровым изображением. Хотя обычно это не увеличивает подробности отображения вне соответствующего разрешения экрана, это действительно позволяет пользователям видеть объекты пользовательского интерфейса (UI) и текст с большими размерами. Способ, с помощью которого такая лупа взаимодействует с различными нижележащими элементами экрана и окнами, является очень важным; характер этого взаимодействия, вероятно, оказывает существенное влияние на фактическую и воспринимаемую доступность этого средства.
Пример существующего средства увеличения экрана на уровне операционной системы (OS) представляет собой утилита "Maginfier" ("лупа") операционной системы Microsoft Windows XP®. Лупа - это утилита отображения, которая делает экран более читаемым для пользователей, которые имеют слабое зрение. Она создает отдельное окно, которое отображает увеличенную часть экрана, позиция которой определяется позицией курсора указательного устройства, например указателя мыши. Пользователь может изменить уровень увеличения через параметры настройки в панели управления средства. Пользователь может перемещать или изменять размеры окна лупы или перетащить его на край экрана и закрепить его на месте.
Известным специализированным приложением для увеличения экрана является приложение Zoom Magic. После запуска это приложение открывает пользовательское окно для увеличения, как показано на Фиг.1. Размеры окна можно изменять, и окно можно перемещать, как обычное окно. Все инструментальные средства/параметры настройки доступны в строке заголовка. Окно увеличивает изображение, которое расположено непосредственно под ним. Курсор мыши может перемещаться над увеличенным содержимым, но не может взаимодействовать с ним.
Что касается Фиг.1, имеется режим отслеживания курсора, инициализируемый посредством нажатия на кнопки со стрелкой в строке заголовка окна. Нажатие на разные красные стрелки закрепляет окно сверху/снизу/слева/справа. Нажатие в центре отменяет закрепление окна и возвращает его к обычному окну. Этот режим дает возможность накладываться поверх других открытых окон, но не позволяет взаимодействовать с нижележащими окнами приложений в пределах окна увеличения. Отслеживание курсора может быть включено/выключено посредством нажатия на кнопку со стрелкой. Имеется вариант удержания окна увеличения поверх рабочего стола и любых других открытых окон, но в этом режиме увеличенное изображение не обновляется, пока в окне увеличения не щелкают мышью.
Программа "Lens" ("Линза") является инструментальным средством, предлагаемым ABF Magnifying Tools (http://www.abf- soft.com/magnifying-tools.shtml), которое создает имитацию лупы, как показано на Фиг.2 предшествующего уровня техники. Пользователь может изменять положение лупы посредством перетаскивания и использовать ее для выборочного увеличения масштаба изображения областей экрана. Пользователь может откорректировать уровень увеличения, нажимая кнопки "+" и "-". Это инструментальное средство берет статический снимок экрана во время активации. Если на экране что-либо изменяется, это не отражается на изображении с измененным масштабом.
Другим примером известного специализированного приложения для специальных возможностей является приложение ZoomText 8.1 от AI2 (<http://www.aisquared.com/index.htm>). Когда приложение запущено, появляется пользовательский интерфейс (UI) в виде модальной панели управления, как на Фиг.3 предшествующего уровня техники.
Средства лупы/изменения масштаба изображения приложения ZoomText 8.1 имеют несколько режимов.
Полноэкранный режим увеличивает весь экран с некоторым шагом. Когда мышь приближается к краям экрана, автоматически инициируется изменение области отображения.
Режим наложения создает квадратное окно с изменяемым размером в правом нижнем углу экрана. Движение мыши отслеживается в обычном (с масштабом 1:1) отображении, и это движение отражается в увеличенном отображении. Когда мышь приближается к краям экрана, в окне увеличения автоматически инициируется изменение области отображения.
Режим линзы создает плавающее квадратное окно с изменяемым размером, которое перемещается вместе с курсором мыши. Режим линии создает горизонтальную полосу поперек экрана, которая перемещается вверх и вниз вместе с изменениями координаты Y курсора мыши. В окне увеличения происходит динамическое обновление для отражения изменений содержимого экрана во время использования, и через окно увеличения доступно взаимодействие с нижележащими окнами приложений, то есть разрешен ввод от мыши и клавиатуры через лупу в нижележащее окно.
Закрепленный режим создает полосу с изменяемым размером (выделенную черным цветом), расположенную напротив либо верхнего, либо нижнего, либо правого, либо левого края экрана. Движение мыши отслеживается только в изображении с измененным масштабом, в то время как изображение с масштабом 1:1 заблокировано.
Когда включено инструментальное средство Freez It ("заморозить"), оно позволяет пользователю нарисовать на экране прямоугольник с изменяемым размером и блокировать ("заморозить") его позицию. Предопределенное отображение прямоугольника блокирует позицию масштаба изображения в конкретных координатах X и Y. Если информационное содержание изменяется в пределах области, которая увеличена, то это отражается в увеличенном информационном содержании в прямоугольнике. Режим заморозки доступен только в полноэкранном режиме лупы. В полноэкранном режиме нет линзы; увеличивается весь экран, и движение мыши изменяет область отображения в областях "за кадром".
Известные лупы экрана дисплея являются менее чем идеальными с точки зрения их простоты и удобства и интуитивности их использования. Кроме того, способ реализации некоторых луп делает их очень уязвимыми, то есть подверженными сбоям в случае обновлений и исправлений операционной системы/драйверов.
Было бы желательно иметь надежную реализованную с помощью компьютера лупу для экрана дисплея, которая ведет себя больше как настоящая линза оптической лупы с точки зрения того, что она может "плавать над" рабочим столом компьютера и другими открытыми окнами для обеспечения увеличения изображения, находящегося под ней, естественным и интуитивным образом и дает возможность свободного просмотра и взаимодействия с нижележащим рабочим столом/нижележащими окнами.
Реализация приложения для увеличения, предназначенного для использования в операционной системе, которая обеспечивает оконный графический интерфейс пользователя (GUI), например в операционной системе Microsoft Windows®, представляет некоторые трудности. Если лупа создана как традиционное окно, окно для увеличения само становится частью рабочего стола, когда оно открыто. В результате системные вызовы для получения изображений рабочего стола для увеличения будут включать в себя само окно лупы (а не часть графического интерфейса пользователя под ним). Использование таких системных вызовов для выполнения увеличения, как в лупе Windows XP, приводит к эффекту бесконечного отражения. С точки зрения пользователя результат получается таким, что ему или ей препятствуют получить увеличенное изображение того, что лежит ниже окна для увеличения.
Многие доступные приложения для увеличения изображения, например ранее упомянутый продукт ZoomText, решают описанную выше трудность с использованием методики, известной как формирование цепочки драйверов. При этом подходе выбранную часть содержимого экрана, сформированного операционной системой, перехватывают и обрабатывают посредством лупы на уровне ядра, прежде чем передать в драйвер экрана. С помощью программного обеспечения для чтения экрана или увеличения изображения экрана поставщики вспомогательных технологий (ATV), по существу, определяют местонахождение драйвера дисплея, получают необходимую для него информацию, затем передают иногда измененные вызовы интерфейса драйвера дисплея (DDI) первоначальному драйверу дисплея. (Некоторое программное обеспечение для дистанционного управления также использует эту методику для перехвата информации, передаваемой на удаленный компьютер.) Методика перехвата DDI называется формированием цепочки драйверов. Драйвер в цепочке перехватывает вызовы DDI от интерфейса графического устройства (GDI) к драйверу дисплея и манипулирует вызовами таким образом, чтобы увеличить изображение части экрана. Что касается операционной системы Windows®, вывод наложенной лупы просто находится не в ней, таким образом вызовы к частям копии рабочего стола не будут видеть лупу.
Поскольку формирование цепочки драйверов осуществляет вмешательство в предустановленное взаимоотношение между операционной системой и драйвером, оно может официально не поддерживаться поставщиком операционной системы, например корпорацией Microsoft. В результате методика обычно бывает очень уязвимой и склонной к сбоям, например, если операционная система обновляется с помощью новых пакетов обновлений или драйверов. Дополнительная информация относительно формирования цепочки драйверов и ее применения для луп экрана и других вспомогательных технологических продуктов может быть найдена в сети разработчиков Microsoft (MSDN) по адресу http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc/html/atg_driverchain.asp.
Изменение настроек (параметров) для лупы компьютерного дисплея через традиционную панель управления является медленным и неудобным. Было бы очень выгодно, если бы пользователь мог выполнять основные функции управления лупой оперативно, не теряя контекста задачи или без необходимости доступа к панели управления или другого взаимодействия с экранными инструментальными средствами/объектами.
Возможность активировать, деактивировать, позиционировать и корректировать размер и/или уровень увеличения лупы, не убирая фокус ввода из открытых окон, был бы очень выгоден. Параметры настройки лупы могут быть легко изменены, если лупа получает фокус ввода и принимает ввод от мыши/клавиатуры. Однако при этом есть проблема возвращения фокуса ввода интересующему приложению, как только пользователь закончил корректировать параметры настройки. Когда приложение делается активным и возвращается на передний план, оно может находиться не в том же самом состоянии, и фокус ввода клавиатуры может находиться на другом элементе управления.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Настоящее изобретение обеспечивает системы на основе программного обеспечения или встроенного программного обеспечения и способы, исполняемые на устройстве обработки данных (например, на компьютере общего или специального назначения), снабженном экраном дисплея и пользовательским устройством ввода данных (например, указательным устройством, таким как компьютерная мышь, шаровой указатель, сенсорная панель или компьютерная клавиатура). Эти системы и способы служат для обеспечения средства, посредством которого пользователь может удобно, выборочно увеличивать части содержимого экранного дисплея. Новые подходы к обеспечению такой лупы экранного дисплея предоставлены для обращения к одному или более недостаткам известных луп, описанных выше.
Лупой в соответствии с изобретением может управлять пользователь для увеличения выбранных частей рабочего стола и окон, открытых на экране. Обеспечена перемещаемая рамка лупы, в пределах которой представлено увеличенное изображение. Увеличенное изображение соответствует содержимому экрана, распложенному в пределах области увеличения, лежащей под рамкой лупы, увеличенному до установленного уровня увеличения.
Лупой в соответствии с изобретением можно оперативно управлять посредством использования устройства пользовательского ввода данных. По меньшей мере, один рабочий параметр лупы может быть отрегулирован без взаимодействия с экранными объектами и не убирая фокус ввода с рабочего стола или из каких-либо открытых окон на экране. В конкретном варианте воплощения изобретения оперативная управляемость лупы включает в себя возможность активировать и деактивировать лупу, регулировать ее уровень увеличения и регулировать размер ее рамки увеличения.
В соответствии с аспектом изобретения лупа экрана дисплея выполнена с возможностью работать посредством усиления ресурсов, доступных через интерфейсы прикладных программ (API) операционной системы, а именно стиль окон и механизм создания составных изображений содержимого экрана со второй стадией, связанный со стилем окон.
В соответствии с аспектом изобретения создается окно лупы, которое является фактически невидимым для вызовов для получения изображения рабочего стола, которое должно быть увеличено. Это позволяет лупе работать интуитивным образом, разрешая наблюдателю видеть то, что расположено непосредственно под лупой, и взаимодействовать с лупой, не убирая фокус ввода из открытых окон приложений и/или с рабочего стола. Вариант воплощения изобретения делает выгодным использование стилей окон, которое доступно через интерфейсы прикладных программ (API) операционных систем Microsoft Windows® 2000 и XP. Таким образом, избегают необходимости использования уязвимой методики формирования цепочки драйверов.
Упомянутые выше и другие объекты, признаки и преимущества настоящего изобретения будут очевидны и полностью понятны из последующего подробного описания предпочтительных вариантов воплощения, рассмотренных совместно с приложенными чертежами.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 - снимок экрана, показывающий экранное окно увеличения продукта лупы предшествующего уровня техники.
Фиг.2 - снимок экрана, показывающий другой продукт лупы предшествующего уровня техники.
Фиг.3 - снимок экрана, показывающий экранное окно инструментальной панели продукта лупы предшествующего уровня техники.
Фиг.4 показывает панель управления, предоставленную как часть программного обеспечения для использования с продуктом компьютерной мыши предшествующего уровня техники настоящего патентообладателя.
Фиг.5 - блок-схема, иллюстрирующая последовательность этапов рабочего процесса, выполняемых посредством варианта воплощения изобретения лупы экрана.
Фиг.6 - снимок экрана, иллюстрирующий перемещаемую и регулируемую рамку увеличения согласно изобретению, в том числе наложенные графические изображения с подсказками, появляющиеся во время режима регулировки лупы.
Фиг.7 - схематическое представление процесса формирования растрового изображения рамки в соответствии с аспектом изобретения.
Фиг.8 - схематическое представление процесса формирования растрового изображения маски в соответствии с аспектом изобретения.
Фиг.9A - схематическое изображение, включающее в себя часть изображения представления, выбранную для увеличения, показывающее взаимоотношение рамки лупы ("прямоугольника окна лупы") и нижележащей области увеличения ("прямоугольника захвата изображения").
Фиг.9B - последовательность изображений, иллюстрирующая стадии процесса изобретения для формирования и представления увеличенного изображения, соответствующего части изображения, показанной на Фиг.9A.
Фиг.10A-10C - схематические изображения, иллюстрирующие процесс, выполненный посредством алгоритма "растяжения" с коэффициентом 1.5x в соответствии с аспектом изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ВОПЛОЩЕНИЯ
Экранная лупа в соответствии с изобретением включает в себя перемещаемую рамку лупы, в пределах которой представлено увеличенное изображение. Увеличенное изображение соответствует содержимому экрана, расположенному в пределах области увеличения, лежащей под рамкой лупы, увеличенному до установленного уровня увеличения.
Лупа экрана дисплея в соответствии с вариантом воплощения изобретения выполнена таким образом, что при ее активировании она остается поверх рабочего стола и любых других открытых окон экранного дисплея. Она передает события устройства пользовательского ввода данных (например, мыши или клавиатуры) окнам, лежащим под лупой, и динамически обновляет увеличенное изображение, чтобы отразить изменения в содержимом нижележащего экрана. Такая лупа экрана дисплея может быть воплощена в программном обеспечении или встроенном программном обеспечении, исполняемом на компьютере общего назначения или на другом устройстве обработки данных, снабженном экраном дисплея и устройством пользовательского ввода данных.
Аспект изобретения заключает в себе достижение описанного выше поведения посредством усиления ресурсов, доступных через существующие интерфейсы прикладных программ (API) операционной системы, в частности, стиль окон и механизм создания составных изображений содержимого экрана со второй стадией, связанный с этим стилем окон. Используемый здесь термин "стиль окон" широко охватывает любой набор параметров, определяющих функциональные и/или визуальные характеристики окна, которое должно появиться как часть графического интерфейса пользователя (GUI), в том числе наборы параметров, включенных в один или несколько специализированных стилей окон, определенных в наборе интерфейсов прикладного программирования (API). Этот подход согласно изобретению может использоваться вместо уязвимой методики формирования цепочки драйверов.
В иллюстративном варианте воплощения изобретения лупа содержит окно увеличения, созданное со следующими расширенными стилями окна, которые обеспечены как часть интерфейсов прикладных программ (API) операционных систем Microsoft Windows® 2000 и XP для персональных компьютеров:
WS_EX_TRANSPARENT: Этот стиль окон определяет, что окно не будет отрисовываться, пока не будут отрисованы окна под этим окном. Это позволяет взять "копию экрана" под лупой, прежде чем будет нарисована лупа.
WS_EX_LAYERED: Когда этот стиль используется в комбинации со стилем WS_EX_TRANSPARENT, окно лупы не будет принимать пользовательский ввод от мыши или клавиатуры; весь ввод передается приложениям под лупой. Когда окно лупы создается как многоуровневое прозрачное окно, события указательного устройства (например, мыши) будут передаваться другим окнам под многоуровневым окном. Кроме того, этот стиль окон оптимизирует пиксельное наложение полупрозрачного изображения, которое может использоваться для предоставления лупе полупрозрачной рамки. Эта характеристика может использоваться, чтобы дать пользователю визуальный признак, что лупа является "плавающей" над рабочим столом.
WS_EX_NOACTIVATE: Этот стиль окон также делает окно таковым, что оно не принимает "фокус ввода". Таким образом, если окно лупы будет обеспечено как окно, которое обычно становится визуально выделенным (например, обычное окно, снабженное строкой заголовка), то окно не будет становиться визуально выделенным (например, освещенным) как активное окно после щелчка указательным устройством (например, мышью) в его пределах. Пользователь может осуществлять нажатия мыши через лупу. Кроме того, события (ввод) клавиатуры не будут захватываться лупой. Это разрешает пользователю свободно взаимодействовать с окном приложения, расположенным ниже лупы. Кроме того, с этим стилем лупа не появляется на панели задач.
WS_EX_TOOLWINDOW: Добавление этого стиля делает так, что лупа также не обнаруживается в списке открытых окон/приложений, доступном по нажатию клавиш ALT+TAB.
WS_EX_TOPMOST: Этот стиль окон поддерживает лупу как самое верхнее окно. Без него утилита лупы могла бы исчезать позади других окон.
Дополнительная информация об этих и других расширенных стилях окон, включенных в интерфейсы прикладных программ (API) операционных систем Microsoft Windows®, может быть найдена в сети разработчиков Microsoft (MSDN), например, по адресу http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindowex.asp.
Ниже показана иллюстративная функция создания окна лупы, которая может использоваться:
//Создать окно лупы
HWND hwnd =:: CreateWindowEx (
WS_EX_NOACTIVATE | WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOPMOST | WS_EX_TOOLWINDOW, wndClass. IpszClassName, L"", WS_POPUP | WS_VISIBLE | WS_DISABLED, 0,0,0,0,
Рабочий процесс лупы в соответствии с аспектом изобретения проиллюстрирован на Фиг.5. Как только окно лупы активировано, устанавливается таймер, с тем чтобы лупа принимала сообщение таймера с предопределенной частотой (например, приблизительно 15-24 раза в секунду). В одном варианте воплощения интервал таймера установлен равным 15 миллисекундам или 67 раз в секунду. Лупа использует сообщение таймера, чтобы постоянно обновлять изображение лупы для отражения изменений в содержимом нижележащего экрана, пока лупа используется (активирована). Частота обновления в обозначенном диапазоне должна позволить увеличенному изображению изменяться относительно гладко, по мере того как рамка увеличения перемещается на экране, или если имеется анимация, проигрываемая в окне ниже ее, таким образом подражая виду настоящей оптической лупы, удерживаемой и перемещаемой перед экраном. Как показано на Фиг.5, когда принято сообщение таймера, захватывается изображение области, которая должна быть увеличена, окно лупы делается самым верхним, и затем область с захваченным изображением отрисовывается (например, "отрисовывается с растяжением") в лупе с надлежащим уровнем увеличения.
Вариант воплощения изобретения выгодно использует тот факт, что модуль USER32 (диспетчер окон системы Win32) реализует относительно простой механизм формирования для выполнения второй стадии создания составных изображений содержимого экрана, когда созданы прозрачные окна. Это является "второй стадией" формирования в том смысле, что она отличается от обычного или нормального процесса формирования рабочего стола и является дополнением к нему. Нормальный процесс формирования, используемый операционными системами Microsoft Windows®, следует алгоритму, который иногда называют алгоритмом измененной отрисовки. Окна отрисовываются на рабочем столе в обратном порядке по оси z (сверху вниз). Агрессивное "отсечение" используется для ограничения областей экрана, которые будет перерисованы, теми областями, где добавляется информационное содержание или происходит изменение, чтобы тем самым избегать мерцания экрана и сократить количество фактической работы по отрисовке.
Когда окно использует тени, прозрачность или любой другой эффект, который требует, чтобы система Windows® объединила пиксели окна с тем, что находится "позади" него, система Windows® создает промежуточные буферы растровых изображений для рабочего стола и прозрачных окон соответственно. Содержимое этих буферов затем "компонуется" для создания конечного вывода. Вызовы для получения копии экрана рабочего стола (например, GetDC(NULL)) и копирования растрового изображения с растяжением (StretchBlt) рабочего стола будут использовать буфер рабочего стола, а не рабочий стол, получающийся в результате процесса создания составного изображения со второй стадией. Делая себя "прозрачным" окном операционной системы Windows® (даже если его непрозрачность установлена равной 100%), окно увеличения одновременно активизирует процесс создания составного изображения со второй стадией и помещает себя над основным рабочим столом. Использование стиля окон "самое верхнее окно" сохранит лупу на самом верху, предотвращая последующее появление нового окна и его установку в качестве самого верхнего.
Лупа в соответствии с изобретением представляет рамку увеличения с изменяемым размером, которая может перемещаться на экране дисплея и в пределах которой представлено увеличенное изображение, соответствующее содержимому экрана, расположенному в области увеличения, лежащей под рамкой увеличения. В описанном здесь основном варианте воплощения рамка увеличения/линза «прикреплена» к курсору указательного устройства и выровнена по его центру, чтобы двигаться вместе с ним. В других вариантах воплощения рамка увеличения (которая ограничивает виртуальную "линзу" лупы) может быть сделана перемещаемой независимо от курсора указательного устройства.
Лупа компьютерного дисплея в соответствии с аспектом изобретения "плавает" над рабочим столом и любыми открытыми окнами и не убирает фокус ввода с рабочего стола или из любого открытого окна. Как ранее описано, это - желательные характеристики. Однако они представляют проблему, каким образом изменять размеры лупы и ее уровень увеличения. Для нормальных окон приложений это было бы тривиально; изменение размеров достигалось бы посредством перетаскивания границы окна, а уровень усиления мог бы изменяться с помощью экранных элементов управления. Однако использование таких способов приводит к тому, что фокус ввода убирается из других открытых окон, что может иметь непреднамеренные и нежелательные последствия. Параметры настройки также могут быть изменены через страницу панели управления, но этот подход является громоздким и отнимающим много времени, особенно для пользователя, которому может быть нужна частая непостоянная помощь лупы во время выполнения различных задач на компьютере.
В соответствии с аспектом изобретения обеспечена лупа, которая может включаться и выключаться пользователем, по-существу, моментально посредством нажатия на заданную кнопку увеличения, предусмотренную на устройстве пользовательского ввода данных (например, на компьютерной мыши или клавиатуре). Переключатель лупы может являться специализированной кнопкой (или приводимым в действие пользователем переключателем другого типа) или кнопкой, назначенной пользователем для средства увеличения.
В иллюстративном варианте воплощения, когда лупа отображается на экране, пользователь может удерживать кнопку увеличения в течение предопределенного короткого промежутка времени (например, приблизительно полсекунды), чтобы войти в режим регулировки. Чтобы сообщить пользователю, что является активным режим регулировки, в области увеличительной линзы, ограниченной рамкой увеличения, может появиться (например, посредством постепенного перехода) графическое изображение, как показано на Фиг.6. Находясь в режиме регулировки, пользователь может изменить увеличение и размер линзы. Как изображено на Фиг.6, графическое изображение, которое появляется на экране, может обеспечить визуальную индикацию относительно подходящих действий пользовательского ввода (например, движения мыши и вращение колеса прокрутки) для того, чтобы произвести регулировку лупы. Однако пользователь не взаимодействует с этим графическим изображением, чтобы произвести регулировку. Ниже изложена иллюстративная схема для изменения размера увеличительной линзы/рамки.
При активированной лупе изменения размера ширины рамки лупы могут быть вызваны следующим способом. Если пользователь нажимает и удерживает кнопку мыши, назначенную для функции увеличения, и перемещает мышь на предопределенное расстояние в предопределенном направлении (например, 50 пикселей вправо), рамка лупы может быть увеличена в размере (например, с одной или с обеих из своих правой и левой сторон) со скоростью, соответствующей движению мыши в этом направлении. Если пользователь нажимает и удерживает назначенную кнопку мыши и перемещает мышь на предопределенное расстояние во втором предопределенном направлении (например, 50 пикселей влево), рамка лупы может быть уменьшена в размере (например, с одной или с обеих из правой и левой сторон) со скоростью, соответствующей движению мыши в этом направлении.
При активированной лупе изменения размера высоты рамки лупы могут быть вызваны аналогично. Если пользователь нажимает и удерживает назначенную кнопку мыши и перемещает мышь на предопределенное расстояние в третьем предопределенном направлении (например, 50 пикселей вниз), рамка лупы начнет увеличиваться в размере (например, с одной или с обеих из своих нижней и верхней сторон) со скоростью, соответствующей движению мыши. Если пользователь нажимает и удерживает назначенную кнопку и перемещает мышь на предопределенное расстояние в четвертом предопределенном направлении (например, 50 пикселей вверх), то рамка лупы начнет уменьшаться в размере (например, с одной или с обеих из своих нижней и верхней сторон) со скоростью, соответствующей движению мыши.
Вертикальные и горизонтальные изменения размера рамки лупы могут быть произведены одновременно посредством объединения описанных выше движений мыши. Параметры настройки размера лупы могут быть сохранены, с тем чтобы при следующем запуске лупы рамка/линза лупы были того же размера, который она имела перед последним закрытием.
При активированной лупе уровень увеличения может быть изменен следующим образом. Если пользователь нажимает назначенную кнопку мыши и затем при удерживаемой кнопке прокручивает колесико мыши на себя, уровень увеличения уменьшится до любого предельного значения, установленного в качестве минимального уровня увеличения (например, масштаб увеличения 1:1). Если пользователь нажимает назначенную кнопку мыши и затем при удерживаемой кнопке прокручивает колесико мыши от себя, уровень увеличения увеличится (до любого предельного значения, установленного в качестве максимального уровня увеличения). В иллюстративном варианте воплощения уровень увеличения лупы регулируется с шагом приращения для следующих уровней: 1.5x, 2x, 3x, 4x и 5x.
При деактивированной (выключенной) лупе нажатие и отпускание назначенной кнопки мыши заставит лупу активироваться и появиться на экране. Последующее моментальное нажатие кнопки немедленно деактивирует лупу. Если при деактивированной лупе пользователь нажимает назна