Posted on 8. July 2017

Взаимодействие и Движение с Visual Layer in Windows 10 Creators Update

https://blogs.windows.com/buildingapps/2017/06/27/smooth-interaction-motion-visual-layer-windows-10-creators-update/amp/

API-интерфейс Composition оснащен мощным механизмом анимации, который обеспечивает быстрое движение, выполняемое в отдельном процессе вашего UWP приложения. Это гарантирует постоянство 60 кадров в секунду при запуске вашего приложения на устройстве IoT, а также на игровых девайсах. Это просто и очень быстро! Это необходимая возможность для внедрения Fluent Design System, которая сподвигла Microsoft создавать ощущение кинематографического движения в UWP приложениях.

 

 

API-интерфейсы Composition также предоставляют то, к чему вы, вероятно, никогда не имели доступа раньше: возможность создавать высокопроизводительные, низкоуровневые пользовательские анимации, управляемые манипуляциями, как показано выше. Microsoft хочет, чтобы визуальные эффекты были быстрыми и бесперебойными, чтобы сенсорные взаимодействия были качественными и продуктивными. Перенос визуального изображения с помощью пальца или цифровой ручки должен приводить к тому, что визуальный элемент работает независимо от того, как быстро вы нажимаете и тянете его по дисплею.

Даже если движение выглядит хорошо, оно также должно хорошо взаимодействовать с сенсором. Оно должно предоставлять пользователю впечатление, что он взаимодействует с реальным объектом. Движение должно обладать надлежащей физикой, так что, когда пользователь перетаскивает визуальное изображение по экрану и отпускает, движение продолжается с надлежащим инерционным ритмом. Аналогично, пользовательские элементы управления должны обеспечивать необходимое количество сопротивления, когда вы тащите и отпускаете их.

Быстрая и подвижная анимационная система

Visual Layer поддерживает анимацию как для ключевого кадра, так и для анимации выражений. Если вы раньше работали с анимацией XAML, вы, вероятно, уже знакомы с тем, как работают ключевые кадры. В анимации ключевого кадра вы устанавливаете значения для некоторого свойства, которое со временем хотите изменить, а также необходимо назначить продолжительность для изменения: в приведенном ниже примере начальное значение, среднее значение, а затем конечное значение. Система анимации будет следить за анимацией - другими словами, создавая все значения между теми, которые вы явно указали, на основе выбранной функции. Linear или Cubic Bezier -  система анимации будет использовать это для определения значений при интерполяции.

 

CubicBezierEasingFunction cubicBezier = _compositor.CreateCubicBezierEasingFunction(new Vector2(.17f, .67f), new Vector2(1f, 1f));
ScalarKeyFrameAnimation blurAnimation = _compositor.CreateScalarKeyFrameAnimation();
blurAnimation.InsertKeyFrame(0.0f, 0.0f);
blurAnimation.InsertKeyFrame(0.5f, 100.0f);
blurAnimation.InsertKeyFrame(1.0f, 0.0f);
blurAnimation.Duration = TimeSpan.FromSeconds(4);
blurAnimation.IterationBehavior = AnimationIterationBehavior.Forever;
_brush.StartAnimation("Blur.BlurAmount", blurAnimation);

 

Анимация ключевого кадра - это механизм, основанный на времени. Однако есть ситуации, когда нужно, чтобы ваши анимации координировались и управляли друг другом, а не просто двигались синхронно.

 

В приведенной выше анимации (исходный код) каждая серая передача двигается на основе анимации предшествующей ей экипировки. Если предыдущая передача внезапно ускоряется или меняет направление, она вынуждает следующую передачу сделать то же самое. Анимации с ключевыми кадрами не могут создавать эффекты движения, которые работают таким образом, но анимации выражений могут. Это возможно, потому что, в то время как анимация ключевого кадра основана на времени, анимации выражений основаны на ссылках.

Решающий код, который подключает шестерни для анимации, находится в следующем примере кода, который использует новую Expression Builder Library - компонент с открытым исходным кодом, выпущенный в Creators Update для создания анимаций выражений. Вышеприведенное выражение говорит о том, что анимация должна ссылаться и управляться свойством RotationAngleInDegrees Visual, которое обозначается параметром «previousGear». В следующей строке текущее свойство RotationAngleInDegrees Visual в конечном итоге анимируется на основе значения, указанного в выражении.

 

private void ConfigureGearAnimation(Visual currentGear, Visual previousGear)
{
    // If rotation expression is null then create an expression of a gear rotating the opposite direction

    var _rotateExpression = previousGear.GetReference().RotationAngleInDegrees;

    // Start the animation based on the Rotation Angle in Degrees.
    currentGear.StartAnimation("RotationAngleInDegrees", _rotateExpression);
}

 

Но что если анимация может управляться другой анимацией, вам может быть интересно, не могли бы вы также задействовать анимацию с чем-то более конкретным, как пользовательский ввод? Да, Это возможно!

Великолепие ScrollViewer ManipulationPropertySet

Управлять анимацией из ScrollViewer с помощью XAML-Composition interop довольно просто. При наличие всего несколько строк кода, вы можете улучшить визуализацию существующего элемента управления ScrollViewer с помощью CompositionAnimation, используя метод GetScrollViewerManipulationPropertySet в классе ElementCompositionPreview. Используя выражение анимации, вы можете привязать свою анимацию к позиции вашего компонента ScrollViewer.

 

Вы бы использовали эту технику, если бы захотели добавить эффект смещения в ваш XAML или создать "липкий" заголовок, который остается на месте, когда содержимое прокручивается под ним. В демонстрационном примере, показанном ниже (исходный код), ScrollViewer используется даже для управления эффектом смещения в ListView.

 

Добавление смещения на страницу XAML может быть выполнено с помощью нескольких строк.

 

// Note: We're not using the ScrollViewer's offset values directly. Instead, we use this PropertySet which holds the position values of the ScrollViewer in real-time.
var scrollPropSet = _scrollProperties.GetSpecializedReference();
var startOffset = ExpressionValues.Constant.CreateConstantScalar("startOffset", 0.0f);
var parallaxValue = 0.5f;
var itemHeight = 0.0f;
var parallax = (scrollPropSet.Translation.Y + startOffset - (0.5f * itemHeight));
_parallaxExpression = parallax * parallaxValue - parallax;
_parallaxExpression.SetScalarParameter("StartOffset", (float)args.ItemIndex * visual.Size.Y / 4.0f);
visual.StartAnimation("Offset.Y", _parallaxExpression);

 

 

Еще больше красоты в InteractionTracker

Управление анимацией выражений с помощью ScrollViewer чрезвычайно мощное, но что делать, если вы хотите управлять анимацией с помощью сенсорных жестов, которые не ограничиваются жестом панорамирования / увеличения? Кроме того, при использовании манипуляций ScrollViewer ваши анимации связаны с реагированием на поток пользовательского интерфейса и могут потерять это ощущение, когда поток пользовательского интерфейса увязнет.

Что делать, если вы хотите потянуть предметы к себе пальцем, как в демонстрационной версии ниже (исходный код), или анимировать несколько летящих изображений по экрану и на экране, как это происходит в демо в верхней части этой публикации (исходный код)?

 

Чтобы достичь этих эффектов, вы должны использовать новые классы InteractionTracker и VisualInteractionSource. InteractionTracker - это конечный инструмент, который может управляться активным входом. InteractionTracker также поддерживает ряд свойств, таких как Position и ScalePosition, как часть поддержания состояния. Это то, что вы подключаете к анимации. С другой стороны, класс VisualInteractionSource определяет, какой вход вы будете использовать для вождения вашего InteractionTracker, а также когда начинаете обработку ввода (в частности сенсорное).

 

Следующий пример кода демонстрирует базовую реализацию InteractionTracker. ViewportVisual - это обычная поддержка Visual для корневого элемента на странице. Вы используете ее как VisualInteractionSource для трекера. При этом вы указываете, что отслеживаете манипуляции X и Y. Вы также указываете, что хотите отслеживать инерционное движение.

 

_tracker = InteractionTracker.Create(_compositor);

var interactionSource = VisualInteractionSource.Create(viewportVisual);

interactionSource.PositionXSourceMode = InteractionSourceMode.EnabledWithInertia;
interactionSource.PositionYSourceMode = InteractionSourceMode.EnabledWithInertia;

_tracker.InteractionSources.Add(interactionSource);

 

Привязка трекера к анимации выражений работает в основном так же, как подключение шестерни Visual к другой Visual передаче, как было сделано ранее. Вы вызываете фабричный метод CreateExpressionAnimation в текущем Compositor и ссылаетесь на свойство Position трекера.

 

ar positionExpression = _compositor.CreateExpressionAnimation("-tracker.Position");
positionExpression.SetReferenceParameter("tracker", _tracker);

contentVisual.StartAnimation("Offset", positionExpression);

 

Этот код использует позицию InteractionTracker для создания бесперебойной анимации для смещения Visual. Вы также можете включить анимацию Blur и Opacity для других визуальных эффектов. Это приведет к тому, что все три анимации будут работать вместе, со значениями, основанными на том, как далеко пользователь перетащит палец, чтобы получить удивительно подвижный визуальный эффект. Запустите демо-версию и попробуйте (исходный код).

Это основы управления любой анимацией с любого входа. Все действия будут зависеть от вас.

В завершение

Экспрессионные анимации и взаимодействия с визуальным слоем - это темы, которые быстро набирают спрос. Для подробного ознакомления, мы рекомендуем следующие видеоролики и статьи:

 

 



Posted on 28. May 2017

Что нового в Windows Ink в Windows 10 Creators Update

 

Windows Ink - это изменение стереотипов о возможностях компьютеров; от инструмента, который отлично подходит для рисования объектов, до того, который учитывает вашу личность и ваши эмоции при создание этих объектов. Речь идет о возвращении человеческих возможностей, которые раньше были не досягаемы с помощью просто мыши и клавиатуры (а также касания), речь идет о том, чтобы персонализировать компьютеры под личность каждого пользователя и расширить их возможности. Это больше чем просто инструмент. Microsoft хочет, чтобы пользователи чувствовали себя уполномоченными создавать с того момента, как они взяли ручку и убедились, что Windows понимает каждого пользователя, знает его желания, понимая их по почерку, слову и настроению. Итак, давайте ознакомимся с новыми возможностями Windows Ink.

Теперь, с Creators Update, Windows Ink стал еще лучше, чем когда-либо! При использовании с Surface Dial, он позволяет вам находить новые способы работы и взаимодействия с Windows. С помощью Windows Ink Microsoft хочет расширить возможности пользователей и сделать его больше, чем просто ручкой с бумагой. Такие приложения, как "Photos" и "Maps" расширили функциональные возможности рукописного ввода в прошлом году и продолжают развивать и добавлять новые сегодня. С помощью Paint 3D, в Creators Update, Windows Ink теперь может создавать 3D-объекты! Microsoft развивает функционал для Windows Ink, а также добавляет новые возможности Smart Ink для Windows Ink. Эти возможности позволяют разработчикам понять предпочтения пользователей, которые используют чернила, используя AI, чтобы помочь создавать, подключать и выполнять действия пользователя с чернилами. Microsoft также улучшили и добавили новые функции в структурные элементы Windows Ink, представляя новые трафареты и добавляя поддержку наклона, чтобы создать более богатый опыт рисования. 

Устройства, поддерживающие Pen для Windows, также расширили свои возможности в несколько раз и планируют новые обновления в следующем году! Microsoft видит высокий спрос не только на устройства, но и на приложения, поддерживающие чернила. Чтобы облегчить пользователям поиск совместимых ручек, Wacom сотрудничает с Windows, и разрабатывает Bamboo Ink Pen. Этот инструмент станет доступен уже этим летом и будет поддерживаться почти на всех ПК с ОС Windows, которые включают в себя возмозможность работы с чернилами. Он оснащен протоколом Microsoft Pen Protocol (MPP), который основан на технологии Surface Pen. Кроме того, мы также рады рассказать о том, что Surface Dial теперь доступен в большем количестве стран, таких как Австралия, Канада и Новая Зеландия, предоставляя большему количеству людей возможность попробовать это невероятное новое устройство ввода. Кроме того, новое оборудование от наших OEM-партнеров, таких как Dell Canvas 27, скоро станет доступно и будет использовать те же самые API-интерфейсы RadialController, которые используются для набора. Сегодня, разработчики работают над билдом для  Surface Dial и это означает, что вы должны быть готовы к новому оборудованию, которое наши OEM-партнеры добавят в экосистему.

Прогресс, которого Microsoft достигли с помощью Windows Ink, был бы невозможным без обратной связи и вклада разработчиков, которые были в этом заинтересованы. С помощью более чем тысячей приложений в Windows Store, которые поддерживают Windows Ink, а также тем количеством, которые публикуются каждый день; тех приложений, которые вошли в список "Топ 10 платных в Store", также поддерживающих Ink, - можно заметить невероятный интерес к этому инструменту для рисования. Это невероятная возможность, которую поддерживают пользователи, и именно это вдохновляет Microsoft расширять функционал Ink с каждым новым выпуском Windows.

 

Что нового в платформе Windows Ink?

Чернила - это лучший способ, которым люди могут выразить себя, этот инструмент открывает новые возможности для разработчиков приложений, чтобы сделать их отличительными и выдающимися от других. От самых последних причуд, таких как раскраски для взрослых для простых игр, таких как крестики-нолики, к приложениям, которые помогают вам организовать вашу жизнь, - есть так много возможностей для создания и рисования объектов. Microsoft удостоверился в том, что пользователи Windows Ink, очень довольны своим опытом в рисовании, поскольку они ищут и устанавливают больше приложений с поддержкой инструмента Ink. С точки зрения платформы, есть два способа помочь разработчикам:

 

  • Для добавления чернила в приложение, Microsoft предоставил разработчикам возможность легко и быстро сделать это с помощью элементов управления, которые можно быстро добавить в любое приложение и получить поддержку Windows Ink.
  • Обеспечение самых гибких платформ для разработчиков для внедрения инноваций. Это дает возможность выбирать, с чего начать разработку для Windows Ink.

 

Представляем Smart Ink

Начнем с нового строительного блока, который доступен разработчикам в Creators Update. Внедряя Ink Analysis, это первое из возможностей выпуска Smart Ink, которое Microsoft вносит на платформу. Smart Ink предлагает технологии AI, чтобы не просто понимать, что вы пишете, но также помогать вам, соединяя точки с тем, что вы, возможно, захотите сделать. С помощью Ink Analysis все начинается просто: с распознавания форм и усовершенствования нарисованного вами квадрата, но также доступно больше функций, например, понимание того, какие слова вы написали в квадратах и ​​затем, ваш рисунок может быть внесен в диаграмму org, используя понимание вашей структуры. Главная цель - понять намерения пользователя и дать разработчикам возможность превратить его в богатые цифровые конструкции, а также использовать понимание со всех частей системы. Ink Analysis позволяет любому разработчику понять рисунок чернил, которые они захватывают, будь то почерк, фигуры, номера телефонов, символы запаса, списки, структура документа и многое другое. Это та же самая технология, которую Microsoft дебютировали в Sticky Notes в обновлении Window 10 Anniversary Update, и теперь она доступна для вас! 

Ниже приведен пример использования Ink Analysis для распознавания фигур. Для этого фрагмента мы будем использовать DirectInk для обработки штрихов чернил. Начните с инициализации InkAnalyzer и подключения его к InkPresenter:

 

private void Initialize()
{
    inkAnalyzer = new InkAnalyzer();
    inkCanvas.InkPresenter.StrokesCollected += InkPresenter_StrokesCollected;
    inkCanvas.InkPresenter.StrokesErased += InkPresenter_StrokesErased;
}
 
// Whenever the user draws a new stroke, you copy the stroke into Ink Analyzer’s stroke collection
private void InkPresenter_StrokesCollected(InkPresenter sender, InkStrokesCollectedEventArgs args)
{
    inkAnalyzer.AddDataForStrokes(args.Strokes);
}
 
// When a stroke is erased in InkCanvas, remove the same stroke from Ink Analyzer's collection.
private void InkPresenter_StrokesErased(InkPresenter sender, InkStrokesErasedEventArgs args)
{
    foreach (var stroke in args.Strokes)
    {
        inkAnalyzer.RemoveDataForStroke(stroke.Id);
    }
}

 

Затем вы хотите загрузить штрихи в анализатор. Обычно это делается с помощью явного пользовательского действия (например, пользователь нажимает кнопку) или после того, когда пользователь был не активным некоторое время.

 

inkAnalyzer.AnalyzeAsync();

 

 

Результатом является древовидное представление всего документа с различными типами узлов, например, абзац, строка, список, слово и рисунок. Если, например, вы хотите найти все фигуры в чернилах, вы можете сделать это с помощью кода ниже:

 

IReadOnlyList drawings = inkAnalyzer.AnalysisRoot.FindNodes(InkAnalysisNodeKind.InkDrawing);
foreach (IInkAnalysisNode drawing in drawings)
{
    var shape = (InkAnalysisInkDrawing)drawing;
    switch (shape.DrawingKind)
    {
        case InkAnalysisDrawingKind.Circle:
            // The user drew a circle. You can replace it with a perfect circle that goes through shape.Points.
            break;
        case InkAnalysisDrawingKind.Rectangle:
            // The user drew a rectangle. 
            // You can find the full list of supported shapes here.
            break;
    }
}

 

Если вы хотите узнать больше о Ink Analysis, вы можете посмотреть видео "Enable Natural Pen Interaction by Using Ink Analysis to Better Understand Users’ Ink", загрузить образец Ink Analysis на GitHub, или перейти по ссылке Ink Analysis API Reference.

 

Улучшенная панель Ink Toolbar

В Anniversary Update был создан настраиваемый набор инструментов для черчения, Ink Toolbar и Ink Canvas, которые любой разработчик может добавить в свое приложение только с двумя линиями разметки.

 

 

Многие из приложений Microsoft включили инструменты рисования, чтобы создать привлекательный пользовательский интерфейс. Например, "Photos" добавили ручку каллиграфии и возможность рисовать любую фотографию в галерее. "Maps" добавили функцию, которая позволяет измерять расстояние от маршрута, нарисованного на карте. Edge добавил возможность рисования на веб-страницах. Никогда еще не было так просто добавить Windows Ink в ваши приложения.

В обновлении Creators Update, Microsoft продолжает улучшать эти элементы управления! Если вы уже используете их в своих приложениях, эти улучшения принесут вам пользу без дополнительной работы!

 

По желанию пользователей, в Creators Update добавлен новый трафарет - транспортир. Этот новый трафарет позволяет легко рисовать круги и дуги любого размера. При рисовании дуги транспортир отображает показание, в котором указывается точный угол дуги. Вы также можете изменить размер трафарета пальцем или зумом пальца.

Microsoft также улучшил правитель трафаретом! Как и транспортир, теперь он обеспечивает угол отсчета, который показывает угол линейки с горизонтальной линией. Правитель также привязывается к 0, 45 и 90 градусам для легкого доступа к наиболее распространенным углам, которые используются нашими пользователями.

Пользователи также просили улучшить предварительный просмотр штрихов в Ink Toolbar, и в обновлении Creators Update, это стало доступным! Microsoft вносит изменения в Ink Toolbar для улучшения работы с темами High Contrast, автоматически отображая только цвета, соответствующие требованиям видимости для текущего пользовательского профиля.

Новые возможности Ink


Сегодня Microsoft анонсировали новые Surface Pro и Surface Pen. Вместе они предоставляют возможности для рисования, которые действительно делают запись в цифровом виде такой же естественной, как с помощью ручки и бумаги. Вот некоторые из основных эффектов:

 

  • Низкие латентные чернила, которые практически устраняют отставание при написании
  • Поддержка наклона для захвата дополнительного измерения в цифровой работе инструмента Ink 
  • Чернила, которые захватывают весь спектр вашего рисования с 4096 уровнями чувствительности к давлению
  • Легкая работа с Ink с силой срабатывания, необходимой для рисования

 

Пользователи оставляли свои пожелания об этих возможностях, и они добавлены! С точки зрения разработчиков, если вы уже используете платформу Windows Ink, все эти возможности автоматически появляются в вашем приложении! Изменений не требуется, и вы уже подготовлены к новой Surface Pro с новой Surface Pen.

Чернила с низкой латентностью - это уникальное дополнение к Windows Ink. Это результат тесного взаимодействия между аппаратным и программным обеспечением. Чип Pixelsense Accelerator в новой Surface Pro является первым устройством для запуска кода ускорения Windows Ink на аппаратном уровне. Таким образом, Microsoft достигли нового рубежа в красочной обработке, практически устраняя запаздывание между кончиком пера и чернилами, вытекающими из него, создавая наиболее естественный опыт рисования с помощью Windows Ink.

 

Tilt (Наклон) - еще одно отличное дополнение к работе с инструментом Ink. Отличная новость заключается в том, что в дополнение к новой Surface Pro / Pen, поддерживающей эту новую возможность, Wacom Pens с функцией наклона работает также просто и легко! Tilt позволяет Windows Ink моделировать естественный карандашный набросок, реагирующий на наклон пера. Эта поддержка теперь встроена в карандашную щетку на панели инструментов Ink. На приведенных выше диаграммах мы демонстрируем, как карандашную щетку можно использовать для затенения линий (слева) и рисовать дуги различной толщины в зависимости от степени наклона (справа).

Как упоминалось выше, интеграция наклона происходит автоматически, если вы используете Ink Toolbar. Однако, если вы не используете платформу Windows Ink для рендеринга чернил и хотите создать собственную кисть, которая реагирует на наклон, это также будет реально! Существует два свойства: TiltX и TiltY (соответствующий угол наклона против каждой оси плоскости экрана), которые включены в сообщения ввода указателя. Вы можете получить доступ к значениям наклона из PointerPointProperties, включенным в входные события указателя, или POINTER_PEN_INFO структуры из ввода WM_POINTER.

 

 

Эти улучшения автоматически отображаются в любом приложении, использующем элементы управления Windows Ink, и Microsoft уверяет пользователей, что они будут развивать и улучшать их с каждой версией Windows.

 

Что нового в Surface Dial и RadialController?

Surface Dial представляет новую входную парадигму для вычислений. Она была разработана вместе с опытом использования Windows Ink, что позволяет ей по-настоящему сиять при использовании вместе с ручкой. Microsoft изучили много пользовательского опыта, созданного для использования новых возможностей, которые предлагает Surface Dial, а также появления новых аппаратных средств и принятия стандарта RadialController. Тщательно изучая отзывы пользователей, Microsoft добавили больше возможностей для работы с RadialController в Creators Update.

Прежде всего, это некоторые новые обновления кнопок для RadialControllers. Эти новые функции, "Pressed" и "Released", в сочетании с существующими функциями для вращения и экрана, позволят вам отслеживать сложные взаимодействия, такие как нажатие и поворот или нажатие и отмена. Пример ниже показывает простой способ захвата действия нажатия и поворота.

 

_radialController.ButtonPressed += OnButtonPressed;
_radialController.ButtonReleased += OnButtonReleased;
 
private void OnRotationChanged(RadialController sender,
                               RadialControllerRotationChangedEventArgs args)
{
    if (args.IsButtonPressed)
    {
        /* When button is pressed, you can do modal interactions, fine-grained changes */
    }
    else
    {
        /* Otherwise, do the normal rotation behavior */
    }
}
private void SendHaptics(SimpleHapticsController hapticController)
{
    var feedbacks = hapticController.SupportedFeedback;
    foreach (SimpleHapticsControllerFeedback feedback in feedbacks)
    {
        if (feedback.Waveform ==
                    KnownSimpleHapticsControllerWaveforms.Click)
        {
            hapticController.SendHapticFeedback(feedback);
            return;
        }
    }
}

 

Теперь у вас также есть доступ к движку Haptics в аппарате Surface Dial. Использование SimpleHapticsController - новый объект, который использует спецификацию HID Simple Haptics - вы можете напрямую отправлять обратную связь пользователю. Также вы можете использовать это, чтобы настроить меню,  добавив новое измерение в ваш пользовательский опыт. Этот объект доступен в аргументах всех входных событий радиального контроллера.

В случаях, когда вы хотите скрыть радиальное меню, чтобы предотвратить блокировку пользовательского интерфейса, у вас есть новые свойства ActiveControllerWhenMenuIsSuppressed и IsMenuSuppressed, чтобы вы могли настроить меню, даже когда оно доступно или скрыто. Когда меню скрыто, оно не будет отображаться при нажатии и удержании для приложения переднего плана. Ваше приложение может прослушивать новое событие во время отключения меню, чтобы дать пользователю указание, что меню заблокировано, или создать альтернативный опыт. Ниже приведен пример кода для этой функции:

RadialControllerConfiguration config = RadialControllerConfiguration.GetForCurrentView();
config.ActiveControllerWhenMenuIsSuppressed = myController;
config.IsMenuSuppressed = true;
   
myController.ButtonHolding += MyController_ButtonHolding;
Пользовательский ввод, выполняемый в потоке пользовательского интерфейса, иногда может привести к сбоям в производительности. С обновлением Creators Update, теперь можно обрабатывать взаимодействия с радиальным контроллером в потоке вне UI, используя RadialControllerIndependentInputSource. Ниже приведен пример того, как получить дополнительную производительность с помощью этого метода.

RadialController controller;
Windows.UI.Input.Core.RadialControllerIndependentInputSource independentInput;
CoreApplicationView view;
             
view = CoreApplication.GetCurrentView();
 
var workItemHandler = new WorkItemHandler((IAsyncAction) =>
{
    independentInput = Windows.UI.Input.Core.RadialControllerIndependentInputSource.CreateForView(view);
 
    controller = independentInput.Controller;
 
    controller.RotationResolutionInDegrees = 5;
 
    controller.RotationChanged += Controller_RotationChanged;
    controller.ScreenContactStarted += Controller_ScreenContactStarted;
    controller.ScreenContactContinued += Controller_ScreenContactContinued;
    controller.ScreenContactEnded += Controller_ScreenContactEnded;
    controller.ControlLost += Controller_ControlLost;
    controller.ButtonClicked += Controller_ButtonClicked;
    controller.ButtonPressed += Controller_ButtonPressed;
    controller.ButtonReleased += Controller_ButtonReleased;
    controller.ButtonHolding += Controller_ButtonHolding;
    controller.ControlAcquired += Controller_ControlAcquired;
 
    // Begin processing input messages as they're delivered.      
    independentInput.Dispatcher.ProcessEvents(CoreProcessEventsOption.ProcessUntilQuit);
});
action = ThreadPool.RunAsync(workItemHandler, WorkItemPriority.High, WorkItemOptions.TimeSliced);
Помимо всех дополнений API, приведеннных выше, вы можете теперь настраивать и легко добавлять новые пункты меню в Radial Menu. В разделе “Wheel Settings” в приложении настроек вы можете добавлять специальные пункты меню, которые запускают комбинации клавиш. Только представьте, как легко стало настроить контроллер для отправки ваших любимых ярлыков в Visual Studio, Photoshop или даже при просмотре в Интернете!


Surface Dial продолжает удивлять пользователей и разработчиков. Благодаря этим новым усовершенствованиям, как разработчики, так и пользователи имеют больше контроля и гибкости в своем пользовательском опыте. Microsoft предлагает рисоединиться к многочисленным приложениям, которые уже представили отличный набор функций Surface Dial, таких как CorelDRAW, Autodesk’s SketchBook, Silicon Bender’s Sketchable и Algoriddim’s djay Pro. Мы бы очень хотели увидеть ваши работы с помощью этой уникальной новой формой ввода в Windows.

Присоединяйтесь к Microsoft и сделайте Windows Ink еще лучше! 

С дополнениями Windows Ink и Surface Dial в Creators Update, инструмент Windows Ink стал больше, чем просто ручкой, которая пишет на экране. Цель заключается в том, чтобы развиваться в области, которая поможет пользователям открывать новое и устранять все барьеры; чтобы пользователи, которые используют, любят и нуждаются в Windows Ink, наслаждались легкостью в использовании. Это включает в себя целый ряд усилий, начиная с аппаратного обеспечения, которое Microsoft создает самостоятельно и с партнерами, до следующих дополнений SDK, которые они делают, чтобы улучшать ваши приложения. 
Если вы хотите помочь и внести свой вклад в разработку новых приложений Windows, публикуйте ваши идеи с хэштэгом #WindowsInk, или напишите на WindowsInk@Microsoft.com или же на @WindowsInk.



Posted on 5. April 2017

Выпущены Windows 10 Creators Update и Creators Update SDK

Сегодня Microsoft открыли доступ к загрузке Windows 10 Creators Update и вместе с ним к Creators Update SDK. И сегодня выдающийся день для всех Windows разработчиков, чтобы получить SDK и начать создавать прекрасные приложения, которые будут использовать все преимущества новых возможностей платформы, чтобы доставить опыт, который вы и ваши пользователи будут любить.

Разработчики Microsoft прилагают много усилий, чтобы внедрять инновации в Windows и приподносят возможности этих инноваций разработчикам и пользователям Windows. Microsoft выпустила Windows 10 Anniversary Update всего лишь восемь месяцев назад, и уже видим, что более 80% компьютеров под управлением Windows 10 используют Anniversary Updatе (версия 1607) или более поздние версии.

 

Можно смело сказать, что с сегодняшним выпуском обновления Windows 10 Creators Update, пользователи снова быстро перейдут к последней и лучшей версии Windows. Для разработчиков это самое время, чтобы подготовиться к следующей волне.

Что нового в Creators Update

Вот лишь несколько новых и мощных возможностей в Creators Update:

 

  • Улучшения визуального слоя (эффекты, анимация и переходы) и повышение количества эффектов на уровень XAML с улучшенными элементами управления, которые упрощают добавление улучшений в приложения
  • Улучшения рукописного ввода, в том числе анализ рукописного ввода и улучшенное распознавание, а также панель инструментов с новыми эффектами (наклонный карандаш) и инструменты (транспортир для рисования кривых и кругов)
  • Более мощные и гибкие API для Surface Dial
  • Значительные усовершенствования Bluetooth с Bluetooth LE GATT Server, периферийный режим для более простого обнаружения устройств Windows и поддержка слабосвязанных устройств Bluetooth (эти устройства с низким энергопотреблением не обязательно должны быть явно сопряжены)
  • Более эффективное взаимодействие с пользователем посредством уведомлений, которые теперь можно сгруппировать по приложению, привязать к данным и содержать встроенные элементы управления, такие как индикаторы выполнения
  • Улучшения  Desktop Bridge, чтобы как можно быстрее принести приложения Win32 в Windows 10 и Windows Store
  • Возможность иметь бесшовные перекрестные устройства с Project Rome и недавно выпущенным Android SDK для Project Rome
  • Более целенаправленное и эффективное привлечение пользователей через приложения Facebook с функцией установки приложения с помощью Windows SDK для Facebook
  • Улучшения фонового выполнения, которые позволяют задачам делать больше с увеличенной памятью и временем
  • Улучшенная безопасность приложений с возможностью интеграции Windows Hello
  • Улучшение аналитики приложений с помощью обновленного Dev Portal, который позволяет управлять несколькими приложениями и улучшенными отчетами
  • Более быстрое скачивание и обновление приложений с возможностью компоновки пакетов приложений и потоковой установки
  • Повышенная эффективность и гибкость благодаря новой возможности Visual Studio 2017 для одновременного запуска двух разных версий SDK на одном устройтсве
  • Значительные улучшения Windows Console и Windows Subsystem для Linux, которые позволяют использовать наиболее часто используемые платформы Linux, инструменты и сервисы
  • Возможность для разработчиков игр достигать новых аудиторий путем публикации игр UWP на Xbox через программу Xbox Live Creators
  • Удивительные 3D-впечатления от HoloLens и новых гарнитур смешанной реальности через платформу Windows Mixed Reality
     Здесь вы можете найти более полный список вместе с последней документацией разработчика.
     Microsoft расскажет все эти (и гораздо больше) на конференции Microsoft Build 2017, включая те вещи, которые мы запланировали на будущее.
     
     Начать сейчас
     Для начала ознакомьтесь с записью Clint Rutkas, чтобы узнать, как получить последнюю версию Visual Studio и SDK. Посмотрите запись блога Даниэля Джейкобсона, чтобы рассмотреть некоторые улучшения для разработчиков UWP в Visual Studio 2017.

 



Posted on 3. April 2017

Desktop Bridge: Creators Update

В Creators Update добавлены новые функции для разработчиков приложений и конечных пользователей. Новые возможности помогут разработчиками выпустить приложения для пользователей с богатым опытом.


Перенос пользователей и данных

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

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

Подробный пост по этой теме с образцами кода см. в этой пошаговой инструкции.


Переход пользователя: контакты панели задач и иконки на начальном экране

Многие пользователи обычно прикрепляют свои любимые или наиболее часто используемые приложения к панели задач или меню «Пуск», чтобы быстро получать доступ к приложениям.

С помощью Creators Update разработчики приложений могут повторно перенаправить значки панели задач и иконки начальной панели на версии приложений из Windows Store.


Пользовательский переход: ассоциации типов файлов и обработчики протоколов

Пользователь может выбрать свое любимое приложение по умолчанию для заданного типа файла или протокола. С Creators Update разработчики могут также изменить выбор пользователя, чтобы использовать версию Windows Store того же приложения.


Перенос данных

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

Пользователям понравится, что они смогут возобновить работу с того места, где остановились.


Переход пользователя: удаление предыдущего настольного приложения

В качестве примера наилучшей практики, разработчики должны предлагать удалить предыдущее настольное приложение после первого запуска версии приложения из Windows Store. Это помогает избежать путаницы пользователей и потенциального повреждения данных пользователей.

Помните, что пользователь может отказаться от удаления предыдущего настольного приложения, поэтому предыдущая и сохраненная версия приложения могут работать вместе. Разработчик приложения должен решить, следует ли блокировать запуск версии Windows Store-приложения до тех пор, пока не будет удалено предыдущее настольное приложение.


Проводник Windows Explorer: предварительный просмотр, эскизы, подробные свойства и группировка по типу

Другой акцент в выпуске Creators Update - удовлетворенность пользователей.

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


Обработчик предварительного просмотра

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

 

Пример XML:


   
      
         
            .bar
         
         
      
   

Обработчик эскизов

В проводнике Windows Explorer эскизы могут предоставляться только для чтения внутри файлов, когда для просмотра установлены иконки среднего размера или выше.

Пример XML:

 

 
   
       
          
            .bar
          
          
       
   
  

 

 

Обработчик свойств

Служба Microsoft Windows Search использует обработчики свойств для извлечения значений свойств из элементов и использует системную схему свойств, чтобы определить, как нужно индексировать определенное свойство. Кроме того, обработчики свойств могут использоваться для предоставления более подробной информации об определенном файле в диалоговом окне свойств или в области сведений.

 

Пример XML:


   
      
         
            .bar
         
         
      
   

 

Группировка файлов по их «типу»

Разработчики могут указать, какими являются «типы» их файлов, которые позволят конечным пользователям группировать свои файлы по «типу» в Windows Explorer.

 

Пример XML:


   
      
         .m4a
         .mta
      
      
         
         
         
      
   

 

Поддержка установки пользовательских шрифтов приложениями

Приложения Microsoft Windows Store могут совместно использовать свои пользовательские шрифты в других приложениях Windows. Это делается путем внесения нескольких простых изменений в манифест приложения.

Пример XML:


   
      
         
         
      
   

Общедоступная внепроцессная поддержка COM-сервера, также известная как Packaged COM

Теперь разработчики могут добавить поддержку внепроцессных расширений COM и OLE для хранения версий магазина настольных приложений. Эта технология называется Packaged COM. Исторически настольные приложения создавали COM-расширения, которые могли использовать другие приложения. Тем не менее, в выпуске Windows 10 Anniversary Update Desktop Bridge приложение не может выставлять свои точки расширения COM, поскольку все записи реестра находятся в его частном хранилище и не отображаются публично в системе. Packaged COM предоставляет механизм для записей COM и OLE, объявляемых в манифесте, в то время как базовая подсистема обрабатывает активацию объектов, сохраняя при этом беспроигрышную установку.

 

Правила брандмауэра

Когда приложениям требуется, чтобы пользователи добавляли приложение в качестве исключения для брандмауэра, это приводит к путанице пользователей, дополнительные пользовательские клики и / или отказ в исключении по ошибке.

Windows Security Alert пытается обучить пользователя, но это является еще одним решением, которое пользователь должен сделать, прежде чем он сможет использовать свое приложение.

 

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

С помощью Creators Update разработчики могут заранее зарегистрироваться для правил брандмауэра, поэтому пользователям не нужно делать выбор в пользу брандмауэра до запуска своих приложений (в том числе после последующих обновлений приложений).

 

Пример XML:


   
      
         
         
         
         
         
      
   

 

Другие важные функции

 

  • Приложения могут быть предварительно установлены
  • Поддержка интерфейса прикладного программирования для обмена сообщениями (MAPI)
  • Windows App Certification Kit теперь включает тестовые примеры для приложений Desktop Bridge
  • Использование флага URL позволяет приложениям напрямую открывать файлы по URL-адресу вместо загрузки локализованной в кеш-версии файла