Posted on 19. October 2023

Windows launching Arm Advisory Service for developers

 

Windows запускає службу підтримки розробників Arm Advisory Service.

Багато розробників вважають, що створювати програми для Windows on Arm важко, але розробляти для Arm легше, ніж ви думаєте, і Microsoft тут, щоб допомогти! Мені приємно оголосити про нову консультативну службу App Assure Arm, яка допоможе розробникам створювати програми, оптимізовані для Arm. Ця послуга є доповненням до нашої обіцянки: ваші програми працюватимуть на Windows on Arm, і якщо у вас виникнуть проблеми, Microsoft допоможе їх усунути. Більшість додатків просто працюють в режимі емуляції, і розробники можуть перенести свої додатки на нативний запуск із мінімальними зусиллями. Все більше виробників пристроїв створюють пристрої Arm з певної причини – пристрої легкі, мають блискавичне підключення, пропонують подовжений термін служби батареї та мають розширені можливості камери та аудіо на додаток до багатьох інших переваг. Ці переваги можуть сприяти зростанню залучення клієнтів до пристроїв Arm, що спонукає більше постачальників програмного забезпечення до розробки оптимізованих для Arm версій своїх програм, як показано в розділі нижче. У двох словах, екосистема Arm швидко розширюється.


Згідно з даними Counterpoint , до 2027 року частка ринку Arm збільшиться майже вдвічі з 14% до 25%. Це означає, що сумісність програм для Windows on Arm є важливою для подальшої життєздатності ваших програм! Хоча ми тільки сьогодні офіційно оголошуємо про Arm Advisory Service, ми вже більше ніж три роки допомагаємо розробникам створювати програми, оптимізовані для Arm. Ми співпрацюємо з розробниками, щоб ділитися порадами та найкращими практиками, і ми робимо значні інвестиції та розширюємо підтримку розробників. Наприклад, наша консультаційна служба Arm уже допомогла незалежним постачальникам програмного забезпечення у сфері запобігання втраті даних (DLP) і наборів продуктів для захисту від зловмисного програмного забезпечення на Arm, надаючи зразки коду, огляди коду, обмінюючись найкращими методами розробки та допомога з налагодження. Ця допомога в розробці Arm є ключовою для того, щоб незалежні розробники програмного забезпечення могли оптимізувати свої програми для Arm.

Особливості програми консультаційних послуг

Наша консультаційна служба Arm — це безкоштовна консультаційна програма з інженерних питань, призначена допомогти розробникам створювати програми, оптимізовані для Arm. Основні переваги цієї програми:

- Технічний воркшоп для передових практик розробки, інструкцій та питань впровадження

- Пропозиції щодо функцій платформи для покращення роботи програми Arm

- Зразки коду та огляди для розробки Arm

- Допомога у розв'язанні проблем, які виникають під час портування або створення програм Arm

- Шлях ескалації до інженерів Microsoft для допомоги в розробці програмного забезпечення та надання відгуків про продукт


Щоб розпочати роботу з Arm Advisory Service, заповніть цю форму , і наша команда App Assure зв’яжеться з вами. Якщо у вас виникли проблеми, зв’яжіться з нами за адресою ACHelp@Microsoft.com.


Відгуки ISV

Консультаційна служба Arm вже допомогла незалежним постачальникам програмного забезпечення розробити нативні програми Arm. Ознайомтеся з цими нещодавніми відгуками про те, як App Assure забезпечив успішну розробку Arm для Zscaler, великої компанії з хмарної безпеки, і Absolute, провідної компанії з кібербезпеки.

Логотип Zscaler

«Перенесення клієнтського конектора Zscaler на Arm стало чудовим досвідом завдяки незрівнянній підтримці команди Microsoft App Assure. Команда App Assure залучала наших звичайних клієнтів, проводила періодичні зустрічі для відстеження, допомагала впоратися зі складними технічними проблемами, надавала глибокі рішення на рівні ОС тощо. Вони також поділилися спеціальним обладнанням ARM, яке допомогло в розробці та тестуванні. Нарешті, вони доклали особливих зусиль, щоб допомогти нашим стороннім постачальникам бібліотек також перенести їхнє програмне забезпечення. Зараз у нас понад 100 клієнтів, які використовують наш клієнт ARM. Дякуємо команді App Assure і Microsoft!»

Абсолютний логотип

«Запатентована технологія стійкості Absolute вбудована в понад 600 мільйонів пристроїв по всьому світу та забезпечує можливості самовідновлення та стійкості як для обчислювальних платформ Intel, так і для Arm. Коли провідний виробник ПК захотів дізнатися більше про те, як Absolute Secure Endpoint забезпечує стійкість на пристроях на базі Arm на додаток до мікросхем Intel, команда App Assure сприяла змістовній дискусії з технічними та маркетинговими ресурсами. Свідченням нашого партнерства з Microsoft є те, що тестування та сертифікація проходили неймовірно швидко, і ми завершили проєкт вчасно та в рамках бюджету. Ми з нетерпінням чекаємо співпраці з командою App Assure для майбутніх ринкових можливостей».


Окрім Zscaler і Absolute, команда App Assure допомогла іншим постачальникам програмного забезпечення розробити програми, оптимізовані для Arm:

14 логотипів

 

Mike Adams, Corporate Vice President, Customer Experience Engineering




Posted on 15. March 2023

Провайдери віджетів

Провайдери віджетів


Примітка:

Деяка інформація стосується продукту в попередньому доступі, який може бути суттєво змінений до комерційного випуску. Корпорація Майкрософт не надає жодних гарантій, прямих або непрямих, щодо наданої тут інформації.


Важливо:

Функція, описана в цій темі, доступна в збірках Dev Channel для попереднього перегляду Windows, починаючи зі збірки 25217. Щоб отримати інформацію про попередні збірки Windows, перегляньте Windows 10 Insider Preview.

Віджети Windows — це невеликі контейнери інтерфейсу користувача, які відображають текст і графіку з програми або вебслужби. Формат адаптивних карток, який використовується віджетами Windows, забезпечує динамічне прив’язування даних, які заповнюють інтерфейс користувача віджета. Щоб оновити ваш віджет, ваша програма або служба запровадить провайдера віджетів, який відповідає на запити від хоста Widgets і повертає рядки JSON, що вказують як візуальний шаблон, так і пов’язані дані для вашого віджета.


Огляд роботи з віджетами Windows і вказівки щодо створення власних віджетів див. у розділі Віджети Windows.

Наразі ви можете реалізувати провайдера віджетів за допомогою запакованої настільної програми Win32. Підтримка прогресивної вебпрограми (PWA) планується для майбутніх випусків. Для отримання додаткової інформації див.


- Implement a widget provider in a win32 app (C#)

- Implement a widget provider in a win32 app (C++/WinRT)


Щоб отримати довідкову документацію щодо API для реалізації провайдерів віджетів, перегляньте простір імен Microsoft.Windows.Widgets.Providers.

Щоб ознайомитися з основами створення віджетів і впровадження провайдера віджетів, перегляньте епізод Tabs vs Spaces «Створення віджетів для Windows 11».


 



Posted on 1. February 2023

Медіаплеєри

Медіаплеєри

Відтворення медіафайлів передбачає перегляд і прослуховування відео та аудіо через вкладений (вбудований у сторінку чи групу інших елементів керування) або спеціальний повноекранний режим.

 

Користувачі очікують базового набору елементів керування, таких як відтворення/пауза, перемотування назад, перемотування вперед, які можна змінювати за потреби (включно з кнопками медіаплеєра, фоном панелі керування, розташуванням елементів керування або макетом).


Чи правильний цей елемент керування?

 

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

Рекомендації

Медіаплеєр підтримує як світлі, так і темні теми, але темна тема забезпечує краще сприйняття для більшості розважальних сценаріїв. Темний фон забезпечує кращу контрастність, особливо в умовах слабкого освітлення, і обмежує втручання панелі керування в перегляд.

 

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

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

Елементи керування оптимізовано для відтворення медіафайлів за замовчуванням, проте ви можете додати до медіаплеєра власні параметри, які вам потрібні, щоб забезпечити кращу роботу з вашим додатком. Щоб дізнатися більше про додавання власних елементів керування, відвідайте розділ Створення власних елементів керування навігацією.

 

UWP та WinUI 2

Важливо: Інформація та приклади в цій статті оптимізовані для програм, які використовують Windows App SDK та WinUI 3, але загалом застосовуються до програм UWP, які використовують WinUI 2. Для отримання інформації та прикладів для конкретної платформи див. довідник UWP API.

Цей розділ містить інформацію, необхідну для використання елемента керування у програмі UWP або WinUI 2.

 

API для цього елемента управління існують у просторі імен Windows.UI.Xaml.Controls.

UWP APIs: клас MediaPlayerElement, клас MediaTransportControls 

 

Відкрийте додаток WinUI 2 Gallery і подивіться на MediaPlayerElement в дії. Додаток WinUI 2 Gallery містить інтерактивні приклади більшості елементів керування, функцій і можливостей WinUI 2. Завантажте додаток з Microsoft Store або отримайте вихідний код на GitHub.

Ми рекомендуємо використовувати останню версію WinUI 2, щоб отримати найновіші стилі та шаблони для елементів керування. WinUI 2.2 або наступні версії містять новий шаблон для цього елемента керування, який використовує закруглені кути. Докладні відомості див. у розділі Радіус кута.

Для розробки “10-футового досвіду” краще використовувати дворядну розкладку. Вона забезпечує більше місця для елементів керування, ніж компактна однорядна, і на ній легше орієнтуватися за допомогою джойстика на відстані 10 футів. Додаткову інформацію про оптимізацію програми для “10-футового досвіду” див. у статті “Проєктування для Xbox та TV”.

MediaPlayerElement доступний лише для Windows 10, версії 1607 та наступних. Якщо ви розробляєте додаток для попередньої версії Windows 10, вам слід використовувати елементи керування MediaElement. Усі наведені тут рекомендації також стосуються MediaElement.

 

Створення медіаплеєра

Важливі API: Клас MediaPlayerElement, клас MediaTransportControls.

 

Відкрийте додаток WinUI 3 Gallery and подивіться на  MediaPlayerElement у дії.

Додаток WinUI 3 Gallery містить інтерактивні приклади більшості елементів керування, функцій та можливостей WinUI 3. Завантажте додаток з Microsoft Store або отримайте вихідний код на GitHub

Додайте медіа до свого додатка, створивши об'єкт MediaPlayerElement у XAML and налаштувавши його  Source значення на MediaSource, що вказує на аудіо- або відеофайл. 

 

Цей XAML створює MediaPlayerElement і налаштовує його значення Source на URI відеофайлу, який є локальним для додатка. MediaPlayerElement  починає відтворюватися, коли сторінка завантажується. Щоб запобігти миттєвому запуску мультимедіа, ви можете встановити властивість AutoPlay у значення false.

XAML

x:Name="mediaPlayerElement"

                    Source="ms-appx:///Videos/video1.mp4"

 

                    Width="400" AutoPlay="True"/>

 

Цей XAML створює MediaPlayerElement з увімкненими вбудованими елементами керування переміщенням і властивістю AutoPlay встановленою в значенні false.

XAML

x:Name="mediaPlayerElement"

                    Source="ms-appx:///Videos/video1.mp4"

                    Width="400"

                    AutoPlay="False"

                    AreTransportControlsEnabled="True"/>


Важливо: Налаштування MediaPlayerElement.Source на відносний URI (ms-appx/ms-resource) працює лише у програмі, укомплектованій за допомогою Windows Application Packaging Project. Якщо ваш додаток не використовує Windows Application Packaging Project, рекомендується перетворити відповідний ms-appx:/// URI на повністю розширений file:/// URI. Дивіться також розділи Налаштування джерела медіафайлів і Відкриття локальних медіафайлів  далі у цій статті.


Елементи керування переміщенням медіафайлів

 

MediaPlayerElement має вбудовані елементи керування переміщенням, які керують відтворенням, зупинкою, паузою, гучністю, вимкненням звуку, пошуком/програванням, субтитрами та вибором звукової доріжки. Щоб увімкнути ці елементи керування, налаштуйте AreTransportControlsEnabled у значення true. Щоб вимкнути їх, налаштуйте AreTransportControlsEnabled у значення false. Елементи керування переміщенням представлені класом MediaTransportControls. Ви можете використовувати елементи керування переміщенням у звичайному стані або налаштувати їх у різний спосіб. Для отримання додаткової інформації див. посилання на клас MediaTransportControls та Створення власних елементів керування переміщенням.

Елементи керування переміщенням підтримують одно- та дворядні розмітки. Перший приклад тут - однорядний, з кнопкою відтворення/паузи, розташованою ліворуч від часової шкали медіа. Така розмітка найкраще підходить для вбудованого відтворення мультимедіа та компактних екранів.

Дворядне розташування елементів керування (показано нижче) рекомендується для більшості випадків використання, особливо на великих екранах. Така розмітка забезпечує більше місця для елементів керування та полегшує роботу користувача зі шкалою часу.


Керування системою переміщення медіаданих

 

MediaPlayerElement автоматично інтегрується з системними елементами керування переміщенням медіафайлів. Елементи керування переміщенням медіа у системі — це елементи керування, які з'являються після натискання апаратних медіакнопок, як-от медіакнопки на клавіатурі. Докладну інформацію можна знайти на сторінці SystemMediaTransportControls..

Налаштування джерела медіафайлів

Щоб відтворювати файли з мережі або файли, вбудовані в програму, встановіть для параметра Source значення  MediaSource із зазначенням шляху до файлу.

Підказка: Щоб відкрити файли з інтернету, вам потрібно визначити можливість доступу до інтернету (Client) у маніфесті програми (Package.appxmanifest). Для отримання додаткової інформації про визначення можливостей див. статтю  Визначення можливостей додатка.

Цей код спробує налаштувати параметр Source елемента MediaPlayerElement, визначеного у XAML на шляху до файлу, введеного у  TextBox.

XAML

x:Name="txtFilePath" Width="400"

         FontSize="20"

         KeyUp="TxtFilePath_KeyUp"

         Header="File path"

 

         PlaceholderText="Enter file path"/>

C#

private void TxtFilePath_KeyUp(object sender, KeyRoutedEventArgs e)

{

    if (e.Key == Windows.System.VirtualKey.Enter)

    {

        TextBox tbPath = sender as TextBox;


        if (tbPath != null)

        {

            LoadMediaFromString(tbPath.Text);

        }

    }

}


private void LoadMediaFromString(string path)

{

    try

    {

        Uri pathUri = new Uri(path);

        mediaPlayerElement.Source = MediaSource.CreateFromUri(pathUri);

    }

    catch (Exception ex)

    {

        if (ex is FormatException)

        {

            // handle exception.

            // For example: Log error or notify user problem with file

        }

    }

 

}


Щоб налаштувати джерело медіафайлу на вбудований у програму медіафайл, ініціалізуйте Uri за допомогою шляху з префіксом ms-appx:///, створіть MediaSource з цим Uri, а потім налаштуйте Source для Uri. Наприклад, для файлу з назвою video1.mp4, який розташований у підпапці Videos, шлях матиме такий вигляд: ms-appx:///Videos/video1.mp4.

Важливо: Налаштування MediaPlayerElement.Source на  відносну URI (ms-appx/ms-resource) працює лише у додатку, запакованому за допомогою Windows Application Packaging Project.

Цей код налаштовує властивість Source елемента MediaPlayerElement визначеного раніше в XAML у значення ms-appx:///Videos/video1.mp4.

C#

private void LoadEmbeddedAppFile()

{

    try

    {

        Uri pathUri = new Uri("ms-appx:///Videos/video1.mp4");

        mediaPlayerElement.Source = MediaSource.CreateFromUri(pathUri);

    }

    catch (Exception ex)

    {

        if (ex is FormatException)

        {

            // handle exception.

            // For example: Log error or notify user problem with file

        }

    }

}

Відкриття локальних медіафайлів

Щоб відкрити файли у локальній системі або зі сховища OneDrive, ви можете скористатися перемикачем FileOpenPicker, щоб отримати файл і параметром Source, щоб задати джерело медіафайлу, або отримати програмний доступ до користувацьких медіатек.

Якщо вашому додатку потрібен доступ без участі користувача до тек Музики або Відео, наприклад, якщо ви перераховуєте всі музичні або відеофайли з колекції користувача і відображаєте їх у вашому додатку, то вам потрібно визначити можливості Музичної бібліотеки й Відеобібліотеки. Для отримання додаткової інформації див. розділ Файли і теки у бібліотеках "Музика", "Зображення" і "Відео".

FileOpenPicker не потребує спеціальних можливостей для доступу до файлів у локальній файловій системі, таких як теки "Музика" або "Відео" користувача, оскільки користувач має повний контроль над тим, до якого файлу він отримує доступ. З точки зору безпеки та конфіденційності краще мінімізувати кількість можливостей, які використовує ваш додаток.

Щоб відкрити локальний медіафайл за допомогою FileOpenPicker:

1. Виберіть FileOpenPicker, щоб дозволити користувачеві обрати медіафайл.

Використайте клас FileOpenPicker для вибору медіафайлу. Встановіть FileTypeFilter, щоб вказати, які типи файлів відображатиме FileOpenPicker. Виберіть PickSingleFileAsync, щоб запустити програму вибору й отримати файл. to launch the file picker and get the file.

2. Використати MediaSource, щоб налаштувати вибраний медіафайл як  MediaPlayerElement.Source.
Щоб використати StorageFile отриманий з  FileOpenPicker, вам потрібно вибрати метод CreateFromStorageFile на MediaSource і налаштувати його як Source елемента MediaPlayerElement. Потім виберіть метод Play на MediaPlayerElement.MediaPlayer, щоб запустити медіафайл.

У цьому прикладі показано, як за допомогою FileOpenPicker вибрати файл і налаштувати його як Source елемента MediaPlayerElement

XAML

<MediaPlayerElement x:Name="mediaPlayerElement"/> ... <Button Content="Choose file" Click="Button_Click"/>


C#

private async void Button_Click(object sender, RoutedEventArgs e)

{

    await SetLocalMedia();

}


async private System.Threading.Tasks.Task SetLocalMedia()

{

    var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

    WinRT.Interop.InitializeWithWindow.Initialize(openPicker, WinRT.Interop.WindowNative.GetWindowHandle(this));


    openPicker.FileTypeFilter.Add(".wmv");

    openPicker.FileTypeFilter.Add(".mp4");

    openPicker.FileTypeFilter.Add(".wma");

    openPicker.FileTypeFilter.Add(".mp3");


    var file = await openPicker.PickSingleFileAsync();


    // mediaPlayerElement is a MediaPlayerElement control defined in XAML

    if (file != null)

    {

        mediaPlayerElement.Source = MediaSource.CreateFromStorageFile(file);


        mediaPlayerElement.MediaPlayer.Play();

    }

 

}



Налаштування джерела постера
Ви можете використовувати властивість  PosterSource, щоб надати вашому  MediaPlayerElement візуальне подання перед завантаженням медіафайлу.  PosterSource - це зображення, наприклад, знімок екрана, постер фільму або обкладинка альбому, яке відображається замість медіафайлу. PosterSource відображається у таких ситуаціях:

1. Коли не вказано дійсне джерело. Наприклад, Source не задано, Source налаштоване на null, або джерело є недійсним (як у випадку, коли сталася помилка: MediaFailed.

2. Під час завантаження медіафайлу. Наприклад, вказано дійсне джерело, але ще не відбулася зміна MediaOpened.

3. Під час потокового передавання даних на інший пристрій.

4. Коли мультимедіа містить лише звук.

Ось MediaPlayerElement зі значенням Source, налаштованим на доріжку альбому, і PosterSource, налаштованим на зображення обкладинки альбому.

XAML

Source="ms-appx:///Media/Track1.mp4" PosterSource="ms-appx:///Media/AlbumCover.png"/>

Тримайте екран пристрою активним

Зазвичай пристрій приглушує екран (і зрештою вимикає його), щоб заощадити заряд акумулятора, коли користувач відсутній, але відеопрограмам потрібно тримати екран увімкненим, щоб користувач міг бачити відео. Щоб запобігти вимкненню дисплея, коли дії користувача більше не виявлено, наприклад, коли програма відтворює відео, ви можете використати DisplayRequest.RequestActive. Клас DisplayRequest дає змогу вказати Windows тримати дисплей увімкненим, щоб користувач міг бачити відео.

Для економії енергії та заряду акумулятора слід використовувати DisplayRequest.RequestRelease, щоб вимкнути запит на відображення, коли він більше не потрібен. Windows автоматично деактивує активні запити вашого додатка на відображення, коли ваш додаток зникає з екрана, і знову активує їх, коли ваш додаток повертається на передній план.

Нижче наведено кілька ситуацій, коли вам слід вимкнути запит на відображення:

  • Відтворення відео призупиняється, наприклад, через дії користувача, буферизацію або налаштування через обмежену пропускну здатність.
  • Відтворення зупиняється. Наприклад, відео завершено або презентацію закінчено.
  • Виникла помилка відтворення. Наприклад, проблеми з підключенням до мережі або пошкоджений файл.

Щоб екран залишався активним:

1. Створіть глобальну змінну DisplayRequest. Ініціалізуйте її в null.

C#
private DisplayRequest appDisplayRequest = null;

2. Виберіть RequestActive, щоб повідомити Windows про те, що програма вимагає, щоб екран залишався увімкненим.
3. Виберіть RequestRelease, щоб зняти запит на екран щоразу, коли відтворення відео зупинено, поставлено на паузу або перервано помилкою відтворення. Коли ваша програма більше не має активних запитів на екран, Windows заощаджує заряд акумулятора, зменшуючи яскравість екрана (і, зрештою, вимикаючи його), коли пристрій не використовується.

Кожен MediaPlayerElement.MediaPlayer має сеанс відтворення PlaybackSession типу MediaPlaybackSession , який контролює різні аспекти відтворення медіа, такі як  PlaybackRate, PlaybackState і Position. Тут ви використовуєте зміну стану відтворення (PlaybackStateChanged) у MediaPlayer.PlaybackSession для виявлення ситуацій, коли вам слід зняти запит на відображення. Потім використовуйте властивість NaturalVideoHeight, щоб визначити, чи відтворюється аудіо-, чи відеофайл, і тримайте екран активним, тільки якщо відтворюється відео.

XAML

x:Name="mediaPlayerElement" Source="ms-appx:///Videos/video1.mp4"/>

C#


public sealed partial class MainWindow : Window

{

    public DisplayRequest appDisplayRequest = null;

    // using Microsoft.UI.Dispatching;

    private DispatcherQueue dispatcherQueue = DispatcherQueue.GetForCurrentThread();


    public MainWindow()

    {

        this.InitializeComponent();

        mediaPlayerElement.MediaPlayer.PlaybackSession.PlaybackStateChanged += 

            PlaybackSession_PlaybackStateChanged;

    }


    private void PlaybackSession_PlaybackStateChanged(MediaPlaybackSession sender, object args)

    {

        MediaPlaybackSession playbackSession = sender as MediaPlaybackSession;

        if (playbackSession != null && playbackSession.NaturalVideoHeight != 0)

        {

            if (playbackSession.PlaybackState == MediaPlaybackState.Playing)

            {

                if (appDisplayRequest is null)

                {

                    dispatcherQueue.TryEnqueue(DispatcherQueuePriority.Normal, () =>

                    {

                        appDisplayRequest = new DisplayRequest();

                        appDisplayRequest.RequestActive();

                    });

                }

            }

            else // PlaybackState is Buffering, None, Opening, or Paused.

            {

                if (appDisplayRequest is not null)

                {

                    appDisplayRequest.RequestRelease();

                    appDisplayRequest = null;

                }

            }

        }

    }

 

}


Програмне керування медіаплеєром
MediaPlayerElement надає численні можливості, методи та події для керування відтворенням аудіо та відео через властивість MediaPlayerElement.MediaPlayer. Повний перелік властивостей, методів та подій можна знайти на сторінці довідки про MediaPlayer.

Розширені сценарії відтворення медіафайлів
Для складніших сценаріїв відтворення медіа, як-от програвання списку відтворення, перемикання між мовами звуку або створення власних доріжок метаданих, встановіть  MediaPlayerElement.Source на MediaPlaybackItem або MediaPlaybackListДокладнішу інформацію про те, як увімкнути різні розширені функції медіа, можна знайти на сторінці Media playback.

Зміна розміру та розширення відео
Використовуйте властивість Stretch, щоб змінювати те, як відеоконтент та/або PosterSource заповнює контейнер, в якому він знаходиться. За допомогою цієї властивості можна змінювати розмір і розтягувати відео залежно від значення Stretch. Стани Stretch подібні до налаштувань розміру зображення на багатьох телевізорах. Ви можете підключити цей параметр до кнопки й дозволити користувачеві вибирати, якому налаштуванню він віддає перевагу.

1. None не відображає власну роздільну здатність вмісту в його оригінальному розмірі. Це може призвести до обрізання частини відео або появи чорних смуг по краях відео.

2. Uniform рівномірно заповнює якомога більше простору зі збереженням співвідношення сторін і відеоконтенту. Це може призвести до появи горизонтальних або вертикальних чорних смуг по краях відео. Це схоже на широкоекранні режими.

3. UniformToFill заповнює весь простір зі збереженням співвідношення сторін. Це може призвести до обрізання частини відео. Це схоже на повноекранний режим.

4. Fill заповнює весь простір, але не зберігає співвідношення сторін. Відео не обрізається, але може відбутися розтягування. Це схоже на режими розтягування.

 


Тут використовується кнопка AppBarButton для перегляду параметрів розтягування (Stretch). Оператор switch перевіряє поточний стан властивості Stretch і встановлює його на наступне значення у переліку Stretch.Це дозволяє користувачеві циклічно перебирати різні стани розтягування.

XAML

Icon="Trim"

              Label="Resize Video"

              Click="PictureSize_Click" />

 

C#

private void PictureSize_Click(object sender, RoutedEventArgs e)

{

    switch (mediaPlayerElement.Stretch)

    {

        case Stretch.Fill:

            mediaPlayerElement.Stretch = Stretch.None;

            break;

        case Stretch.None:

            mediaPlayerElement.Stretch = Stretch.Uniform;

            break;

        case Stretch.Uniform:

            mediaPlayerElement.Stretch = Stretch.UniformToFill;

            break;

        case Stretch.UniformToFill:

            mediaPlayerElement.Stretch = Stretch.Fill;

            break;

        default:

            break;

    }

 

}

 

Увімкнення відтворення з невеликою затримкою

Налаштуйте властивість RealTimePlayback у значення true для елемента MediaPlayerElement.MediaPlayer, щоб дозволити елементу медіаплеєра зменшити початкову затримку при відтворенні. Це важливо для програм двосторонньої комунікації, а іноді може застосовуватися у деяких ігрових сценаріях. Зверніть увагу, що цей режим є більш ресурсомістким і менш енергоефективним.

 

У цьому прикладі створюється елемент MediaPlayerElement і налаштовується значення RealTimePlayback у true.

C#

MediaPlayerElement mediaPlayerElement = new MediaPlayerElement();

mediaPlayerElement.MediaPlayer.RealTimePlayback = true;

 

 

Source

Схожі статті

Основи проєктування Windows-додатків.

Основні принципи оформлення вмісту для  Windows додатків.

 

 



Posted on 28. January 2023

5 Функцій .NET MAUI для створення відмінних настільних програм

5 Функцій .NET MAUI для створення відмінних настільних програм


Окрім створення кросплатформних програм для мобільних пристроїв за допомогою .NET MAUI, ви також можете створювати чудові настільні програми для Windows та Mac. Можливо, ваша програма зосереджена лише на платформах для настільних комп’ютерів, або, можливо, вона поширюється скрізь на мобільних і настільних формфакторах. Так чи інакше, важливо забезпечити найкращий досвід для своїх користувачів незалежно від того, яким пристроєм вони користуються. Це означає використання всіх переваг апаратного забезпечення та операційної системи, на яких працює ваша програма. У випадку настільного комп’ютера, .NET MAUI надає декілька унікальних функцій для покращення досвіду для користувачів, і сьогодні я збираюся розібрати свій Топ 5 найкращих функцій .NET MAUI.


Мультивікна

Фундаментальною зміною в .NET MAUI стало впровадження Window як основи. Коли ви створюєте та запускаєте свою програму .NET MAUI, вона автоматично має Window за замовчанням, який ваша Application створює та використовує для відображення вмісту. Клас Application має новий метод CreateWindow, який викликається, коли створюється будь-який новий Window. Коли програми працюють на настільному комп’ютері (або планшеті), є більше можливостей для використання, а це означає, що ви можете створити друге або третє Window замість навігації. Розглянемо приклад програми погоди. Коли користувач переходить до міста, ми можемо захотіти відобразити додаткову інформацію, включно з картою. У нас є можливість перейти на цю сторінку або відкрити абсолютно нове вікно за допомогою вбудованого API:


Наші користувачі тепер мають кілька режимів перегляду, якими вони можуть скористатися замість того, щоб обмежуватися одним вікном інформації. У будь-який момент, користувач може закрити вікно, або ми також можемо закрити його програмно.


Щоб отримати додаткові відомості про налаштування підтримки кількох вікон, обов’язково прочитайте документацію щодо мультивікон.


Рядок меню верхнього рівня


Під час використання настільних програм однією з найпоширеніших функцій є панель меню, інтегрована в програму в Windows або в системну панель меню в Mac. За допомогою .NET MAUI ви можете легко інтегрувати панель меню, використовуючи лише декілька рядків коду. Додатковою перевагою є те, що коли ваші користувачі запускають програму на iPad за допомогою клавіатури, вони також зможуть отримати доступ до меню.


Давайте знову візьмемо за приклад програму погоди. Можливо ми захочемо мати меню, яке дозволить нашим користувачам додавати, видаляти або переглядати різні місця.


Кожна ContentPage має колекцію MenuBarItems, яка може мати декілька рівнів меню:

Ви можете створити ці пункти меню безпосередньо в XAML або створити їх програмно в коді, щоб ваші меню були динамічними. Пункти меню можна ввімкнути або вимкнути, мати роздільники, підменю, піктограми в Windows, а крім прив’язки до Command  доступна подія Clicked. Обов’язково перегляньте документацію стосовно рядка меню, щоб дізнатися більше.

Контекстні меню

 

Іноді є бажання надати більше опцій, коли користувач клацає на елемент правою кнопкою миші. Вам потрібне меню, схоже на рядок меню, але на основі певного контексту. Саме тут контекстні меню вступають у гру в програмах .NET MAUI. Вони мають аналогічний API, як і рядок меню, але розміщуються на певному елементі керування. Наприклад, ми можемо захотіти додати коментар до певного міста в нашому додатку погоди. Ми можемо захотіти відкрити нове вікно, а потім надати місце для введення тексту за допомогою редактора.


Ми можемо застосувати MenuFlyout до редактора та заповнити його елементами MenuFlyoutItems, подібними до нашої попередньої панелі меню.

Подібно до панелі меню, ви також можете прив’язуватись до Command  для події, мати піктограми, підменю, розділювачі тощо. Перегляньте документацію щодо контекстного меню, щоб отримати всі деталі.

Підказки

Підказки — це швидкий і простий спосіб збільшити функціональність вашої програми та покращити взаємодію з користувачем. Користувачі комп’ютера мають доступ до миші та клавіатури, а це означає, що ви можете надати додатковий контекст та інформацію, коли вони наводять курсор на елемент керування у вашій програмі. Використання вкладеної властивості TooltipProperties.Text дає змогу вказати додаткову інформацію, яка відображається користувачеві під час наведення курсора миші.

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

Те саме можна зробити програмно в коді для будь-якого елемента керування:

Для отримання додаткової інформації перегляньте документацію, що стосується підказок.

Жести вказівника

Говорячи про вдосконалення настільних програм, коли користувачі переміщаються по екрану, за допомогою миші, .NET MAUI має кілька нових розпізнавачів жестів спеціально для вказівника миші. Ви можете легко побачити, коли будь-який вказівник увійшов, вийшов або перемістився всередині елемента керування.

Тут ми отримуємо події, коли вказівник взаємодіє з нашим Image. Отримавши подію, ми також можемо отримати положення покажчика всередині Image або відносно нього.

І так само у нас є Point, який ми можемо використовувати для виконання дій у нашій програмі. Щоб дізнатися більше про різні засоби розпізнавання жестів, перегляньте документацію.

Ще більше функцій для настільних програм


Ось і все, 5 чудових функцій для покращення ваших програм .NET MAUI на настільних комп’ютерах. Звісно це тільки початок, оскільки є ще багато різноманітних функцій для створення відмінних програм на всіх платформах. Обов’язково перегляньте всю документацію .NET MAUI, щоб знайти інші функції та елементи керування, якими ви можете скористатися.

 

Source

 



Posted on 21. November 2022

Що нового в Windows App SDK 1.2

Що нового в Windows App SDK 1.2

 

Ми раді повідомити, що Windows App SDK 1.2 тепер доступний! З WinAppSDK 1.2 тепер ви можете створювати віджети для панелі віджетів Windows 11, використовувати найсучасніші елементи керування WinUI, включаючи відтворення медіа та InfoBadge, а також підтримувати графіку HDR через DisplayInformation API серед інших додаткових функцій. Ми також зробили кілька оновлень для підвищення надійності, стабільності та продуктивності платформи, щоб допомогти вам створювати надійні та потужні програми для Windows.

 

Windows App SDK надає уніфікований набір API та інструментів, які допоможуть вам створювати красиві та потужні програми Windows для робочого столу. Ці API та інструменти можуть узгоджено використовуватися будь-якою програмою C++ Win32 або C# .NET у широкому наборі цільових версій ОС Windows. WinAppSDK постійно оновлюється завдяки частим випускам, незалежним від ОС, і підтримує останні інновації в розробці додатків Windows, включаючи .NET і Visual Studio.

 

Почніть роботу з Windows App SDK

Щоб почати використовувати Windows App SDK, див. Початок роботи з Windows App SDK, щоб налаштувати середовище розробки та дізнатися більше про компоненти, включені в цей випуск. Якщо ви хочете одразу розпочати створення своєї першої настільної програми WinUI 3, почніть із нашого підручника або подивіться наш навчальний сеанс, випущений на Build 2022.

 

Функціональність представлена ​​в Windows App SDK 1.2

 

Віджети для сторонніх програм


Із запуском Windows 11 ми представили дошку віджетів із вмістом, підібраним Windows. Віджети забезпечують чіткий перегляд важливої ​​інформації за допомогою доступу одним дотиком із панелі завдань або проведенням пальця від лівої сторони сенсорного екрана та заповнюються програмами, установленими на пристрої. Тепер із запуском Windows App SDK 1.2 ми раді зробити цю функцію доступною для сторонніх розробників, щоб створювати віджети для своїх упакованих програм Win32 і тестувати їх локально на дошці віджетів Windows 11 через нашу програму Windows Insider. Створюючи віджети для ваших додатків, ваші клієнти можуть легко й без проблем залишатися в курсі важливої ​​для них інформації.

 

Щоб розпочати розробку віджетів для своєї програми, ознайомтеся з  документацією щодо розробки віджетів і  основами дизайну віджетів, щоб отримати передумови, вказівки та найкращі практики.


Найновіші елементи керування WinUI, включаючи відтворення медіа


Програми WinUI 3 можуть відтворювати аудіо та відео за допомогою елементів керування відтворенням медіафайлів MediaPlayerElement і MediaTransportControls. Додаткову інформацію про те, як і коли використовувати засоби керування медіафайлами, див. у  розділі Медіаплеєри.

У WinUI 3 додано останні елементи керування, стилями та поведінкою з WinUI 2.8. Ці оновлення включають додавання елемента  керування InfoBadge, покращення доступності та режиму високої контрастності, а також виправлення помилок в елементах керування. Щоб отримати додаткові відомості, перегляньте примітки до релізу WinUI 2.7  і  WinUI 2.8.

Голосові та відео дзвінки в програмах WinUI 3 через Azure Communication Services (ACS)


Тепер ви можете додати можливості голосових і відеовикликів до своїх програм WinUI 3, які працюють у Windows, забезпечуючи різноманітні можливості спілкування для настільних ПК. Комунікаційні служби Azure використовують ту саму інфраструктуру, служби та технології, які забезпечують виклики Microsoft Teams.

Ознайомтеся з нашим оглядом концептуальної документації та спробуйте швидкі інструкції та зразки:

- Додайте голосовий виклик до програми WinUI 3

- Додайте відеодзвінки 1:1 у свою програму WinUI 3

DisplayInformation

Настільні програми Windows тепер можуть підтримувати розширений динамічний діапазон (HDR) і автоматичне керування кольором (ACM) через клас DisplayInformation у WinAppSDK. Цей API простіше використовувати для програм Win32, а розробники програм тепер можуть використовувати один API для націлювання на Windows версії 1809  і пізніших. Клас DisplayInformation дає змогу відстежувати пов’язану з відображенням інформацію для подання програми. Це включає події, які дозволяють клієнтам відстежувати зміни в поданні програми, що впливають на те, на якому дисплеї знаходиться подання, а також зміни в дисплеях, які можуть вплинути на подання програми.

Підтримка Visual Studio Arm64


Ще в Project Reunion (тепер WinAppSDK) 0.5 програми, розроблені за допомогою WinAppSDK, могли працювати на Arm64. Починаючи з Visual Studio 17.3 Preview 2, ви зможете самостійно розробляти програми за допомогою WinAppSDK на пристроях Arm64.

 

Щоб розпочати розробку на пристрої Arm64, перегляньте наші документи з детальним описом Windows на Arm і Arm64 Visual Studio.


Обрізка для програм .NET


Тепер ви можете публікувати скорочені програми .NET WinAppSDK. З CsWinRT 2.0, проєкції C#/WinRT, поширені в WinAppSDK, можна обрізати. Публікація вашої програми в скороченому вигляді може зменшити обсяг  вашої програми на диску шляхом видалення будь-якого невикористаного коду з двійкових файлів, які можна урізати. Ваш додаток також може покращити продуктивність запуску. З базовою програмою Hello World ми спостерігали збільшення обсягу дискового простору на ~80% і покращення продуктивності при запуску на ~7% після публікації скорочення. За допомогою галереї WinUI ми спостерігали збільшення дискового сліду на ~45%.

Щоб отримати додаткові відомості про те, як увімкнути обрізання, обмеження на обрізання (наприклад, відображення проти типів, які можна обрізати), і попередження про обрізання, див. Обрізання  самодостатніх розгортань і виконуваних файлів.

Динамічна частота оновлення

 

Динамічна частота оновлення (DRR), представлена ​​в Windows 11, дозволяє пристроям плавно перемикатися між нижчою та вищою частотою оновлення залежно від того, що користувачі роблять на своєму ПК. Це допомагає збалансувати продуктивність і енергоспоживання. Як частина WinUI 3 у Windows App SDK 1.2, Microsoft.UI.Composition тепер підтримуватиме динамічну частоту оновлення на пристроях, які вибрали цю функцію. Зокрема, завдяки підтримці DRR пристрої під керуванням Windows 22H2 автоматично отримають плавніше прокручування та взаємодію у вашій програмі без будь-яких інших змін.

Щоб дізнатися більше про те, як найкраще підтримувати Dynamic Refresh Rate у вашій програмі, перегляньте наш інструмент Dynamic Refresh Rate (створений на WinAppSDK 1.1), який показує, як використовувати API Compositor Clock і підтримувати SwapChains.

 

AppNotificationBuilder

 

У Windows App SDK 1.1 ми представили можливість створювати та надсилати сповіщення з вашої програми або хмарної служби. Сповіщення програми можна використовувати для інформування користувача про стан програми чи зміни стану або для спонукання користувача виконати дію за допомогою цікавого та насиченого інтерфейсу користувача.

З WinAppSDK 1.2 ми представляємо AppNotificationBuilder, альтернативу корисному навантаженню XML для спрощення створення та визначення цих сповіщень. Щоб почати використовувати AppNotificationBuilder для створення сповіщень програми, перегляньте  специфікацію AppNotificationBuilder  на GitHub. Також перегляньте  статтю Швидкий старт: сповіщення програми в Windows App SDK,  щоб дізнатися, як створити настільну програму Windows, яка надсилає та отримує сповіщення локальної програми.

Додаткові оновлення

Окрім нової функціональності, представленої в WinAppSDK 1.2, також є кілька покращень продуктивності, надійності та досвіду розробки. Слід зазначити, що двійковий файл WinAppSDK 1.2 на x64 на 11% менший, ніж WinAppSDK 1.1.5.

 

Перегляньте примітки до випуску, щоб отримати повний список виправлених проблем і оновлень у WinAppSDK 1.2.

Майбутні враження від WinAppSDK

 

Ми співпрацюємо з кількома внутрішніми та зовнішніми партнерами з розробки Microsoft, які переносять свій досвід на WinUI 3 і Windows App SDK. Слідкуйте за новинами на наших соціальних мережах, щоб дізнатися більше про ці партнерства.

Залишаючись у курсі

Ви можете бути в курсі подій із командою щодо репозиторію Windows App SDK GitHub і репозиторію WinUI GitHub, а також через наші щомісячні виклики спільноти WinUI, де ми ділимося оновленнями планів та іншими цікавими новинами, а також демонструємо нові функції.

Ви також можете зв’язатися з нами в Twitter за допомогою #WindowsAppSDK і @WindowsUI.

 

Ми з нетерпінням чекаємо на чудові програми, які ви створите за допомогою WinAppSDK 1.2 і WinUI 3!


Щасливого кодування!



Posted on 16. November 2022

Windows на архітектурі Arm

Windows на архітектурі Arm

Windows традиційно працює на комп'ютерах з процесорами x86 / x64, але віднедавна вона також працює на пристроях з процесорами Arm.

 

Пристрої на базі процесорів Arm є особливо цікавими, оскільки архітектура Arm дозволяє їм працювати від батареї довше, забезпечуючи при цьому чудову продуктивність. Часто Arm-системи на кристалі (SoC) включають інші ключові функції, такі як потужний процесор, графічний процесор, Wi-Fi та мобільні мережі передачі даних, а також нейронні процесори (NPU) для прискорення робочих навантажень штучного інтелекту.

 

Створення програм для Windows, які працюють на архітектурі Arm

Windows 10 дозволяє запускати наявні немодифіковані програми x86 на пристроях Arm. Тепер у Windows 11 з'явилася можливість запускати немодифіковані x64-програми Windows на пристроях Arm! Можливість запуску програм x86 та x64 на пристроях Arm дає кінцевим користувачам впевненість у тому, що більшість наявних програм та інструментів працюватимуть належним чином навіть на нових пристроях з підтримкою Arm.

 

Оскільки для досягнення найкращої продуктивності, швидкості реагування та тривалості роботи від батареї користувачам потрібні програми для Windows з підтримкою Arm, це означає, що розробникам потрібно буде створювати або портувати програми для Windows з підтримкою Arm.

Інструменти Arm  для розробників

 

Microsoft працює над створенням набору інструментів для розробників Arm, який включає Arm-орієнтовану Visual Studio 2022, VSCode, пакет інструментів VC++, класичний .NET Framework, сучасний .NET та Java. Корпорація Майкрософт також співпрацює з кількома сторонніми розробниками та спільнотами з відкритим вихідним кодом, щоб перенести поширені інструменти, середовища виконання, фреймворки та бібліотеки для роботи з Windows на Arm. Ознайомтеся з анонсом збірки 2022 анонсом збірки 2022 про цей комплексний набір інструментів, служб і пристроїв, які дають змогу розробникам створювати та портувати програми, орієнтовані на Arm, так само легко, як і на x64.

Послуги Arm для розробників 

Чимало розробників сьогодні також покладаються на віртуальні машини та контейнери. Саме тому команда Microsoft Azure нещодавно оголосила про презентацію нової  Arm Virtual Machines service, а незабаром розпочнеться попередній перегляд контейнерів Arm через Azure Kubernetes Services.

 

Більшість розробників також покладаються на автоматизацію збірки та тестування за допомогою безперервної інтеграції / безперервного розгортання (CI/CD), часто розміщених у хмарних сервісах, таких як Azure DevOps або GitHub. Наприкінці літа 2022 року Microsoft почала роботу над перенесенням інструменту автоматизації CI/CD, який використовується в Azure DevOps і GitHub. Незабаром з'явиться детальна інформація про те, коли хмарні сервіси Arm CI/CD стануть доступними.

Пристрої Arm для розробників

Розробникам потрібні пристрої з підтримкою Arm, на яких можна створювати та тестувати власні програми для Windows. Декілька пристроїв на платформі Arm вже доступні у партнерів Microsoft. Ці портативні пристрої, чи то ноутбуки, чи то конвертовані планшети, мають чудову продуктивність, тривалий час автономної роботи та підтримують дедалі більшу кількість інструментів для розробників, що працюють на платформі Arm.

 

Windows Dev Kit 2023 (кодова назва “Project Volterra”) - це новітній пристрій Arm, створений для підтримки розробників Windows, дослідників ШІ та розробників, які хочуть інтегрувати ШІ у свої програми та досвід.

 

Arm64EC - Створюйте додатки для Windows 11 на архітектурі Arm


 

Arm64EC (“Emulation Compatible”) дозволяє поступово створювати нові програми або портувати вже наявні, щоб скористатися перевагами нативної продуктивності Arm, де це можливо, використовуючи при цьому наявний x64-код та бібліотеки до повної міграції. Дізнайтеся більше:

Використання ARM64EC для створення програм для пристроїв ARM 

 

Розуміння Arm64EC ABI та коду асемблера

Підтримка наявних програм Windows на Arm


Windows на Arm запускає власні Arm-додатки, а також багато немодифікованих x86 і x64-додатків, але для найкращої продуктивності й тривалості роботи від батареї, додатки слід створювати такими, щоб вони були нативними для Arm, де це можливо. Windows-додатки можна створювати за допомогою різних інструментів і технологій, включаючи нативні C/C++ Win32-додатки, класичні WinForms/WPF-додатки .NET Framework, сучасні .NET або MAUI-додатки, або навіть додатки, створені за допомогою Java, Python, node тощо.

Знайдіть інструменти для розробки архітектури Arm


Windows пропонує різноманітні інструменти та фреймворки для підтримки розробки додатків для Arm та на Arm.

1. Нова Arm-native Visual Studio включає Visual C++, .NET & .NET Framework та Java і дозволить розробникам створювати та налагоджувати додатки для Arm на пристроях на базі Arm. Дізнайтеся більше в анонсі блогу.

2. Visual Studio Code підтримує Arm і може бути встановлений на пристрої з підтримкою Arm. Розширення VS Code C++  також пропонує C++ IntelliSense і збірки для розробки Windows-додатків, 

3. NET 6 вже підтримує Arm, як для власного виконання Arm, так і для емуляції x64. Щоб розробляти програми .NET, які працюють на пристроях Arm64, ми рекомендуємо встановити нову версію Visual Studio 2022 17.4 з підтримкою Arm та .NET 7 Arm64 SDK. Дізнайтеся більше про підтримку .NET 7 для Arm та покращення продуктивності для Arm64 у блозі .NET Blog.

4. .NET 6 Arm64 SDK: За замовчуванням, якщо ви запускаєте додаток .NET 6 з Arm64 SDK, він буде працювати як Arm64. Інструмент dotnet-runtimeinfo можна використовувати для виявлення середовища, в якому працює .NET. Для отримання додаткової інформації див. оголошення в блозі .NET 6 про підтримку Arm64.

Примітка: Microsoft використовує термін Arm як скорочення для позначення комп'ютерів, на яких працює десктопна версія Windows на процесорах Arm64 (також відома як AArch64). А термін Arm32 для позначення 32-розрядної архітектури Arm (в іншій документації зазвичай називається Arm). Комп'ютери на архітектурі Arm забезпечують чудову сумісність додатків і дозволяють запускати ваші наявні немодифіковані x86 win32 додатки. Програми Arm працюють нативно без будь-якої емуляції, в той час, як програми x86 та x64 працюють під емуляцією на пристроях Arm.

Додаткові поради щодо розробки програм для Windows, які працюють на пристроях Arm

1. Microsoft рекомендує використовувати MSIX, щоб упакувати вашу програму для дистрибуції. Для отримання додаткової інформації про те, як MSIX підтримує Arm та Arm64, див. Архітектури пакетів додатків: Arm та Arm64.

2. Не всі проєкти Visual Studio налаштовано на локальний запуск проєктів, коли ви запускаєте налагодження (F5) з пристрою Arm. Можливо, вам доведеться налаштувати Visual Studio для віддаленого налагодження, навіть якщо ваш додаток працює локально. Для отримання додаткової інформації див. статтю Віддалене налагодження.

3. Щоб знайти та встановити рекомендовані пакети для Visual Studio, відвідайте сторінку завантажень Visual Studio

Щоб знайти віддалені інструменти для Visual Studio 2022, прокрутіть розділ "Усі завантаження" і розгорніть спадне меню "Інструменти для Visual Studio 2022". Там буде перелічено віддалені інструменти для Visual Studio 2022. Переконайтеся, що позначено перемикач Arm64, а потім натисніть Завантажити.

Щоб отримати Microsoft Visual C++ Redistributable, прокрутіть вниз розділ "Усі завантаження" і розгорніть спадне меню "Інші інструменти та фреймворки". Там буде показано Microsoft Visual C++ Redistributable для Visual Studio 2022. Переконайтеся, що позначено перемикач Arm64, а потім натисніть кнопку Завантажити.

Якщо ви використовуєте старішу версію Visual Studio, виберіть посилання  Старіші Завантаження внизу сторінки для пошуку завантажень, пов'язаних з вашою версією Visual Studio.

4. Коли користувач встановлює вашу програму на пристрій Arm з Microsoft Store, Windows 11 автоматично вибирає оптимальну версію програми з наявних. Якщо ви завантажите в Microsoft Store версії вашого додатка x86, Arm32 й Arm64, операційна система автоматично встановить версію Arm64. Якщо ви надасте лише версії x86 та Arm32, операційна система інсталює версію Arm32. Якщо ви надасте лише x86-версію програми, операційна система встановить цю версію і запустить її в режимі емуляції.

5. Коли вам буде запропоновано вибір архітектури програми, виберіть 32-бітну версію x86, щоб запустити 32-бітну версію програми на комп'ютері з Windows на Arm. Якщо версія програми x64 Win32 не працює, більшість програм мають версію x86.

Щоб дізнатися більше про архітектури, див. розділ Архітектура пакетів програм.

Source



Posted on 15. November 2022

Основи дизайну віджетів

Основи дизайну віджетів


Примітка: Деяка інформація стосується попередньо випущеного продукту, який може бути суттєво змінений до його комерційного випуску. Корпорація Майкрософт не надає жодних гарантій, явних чи неявних, щодо наданої тут інформації.

 

Важливо: Функція, описана в цьому розділі, доступна в попередніх збірках Dev Channel Windows, починаючи зі збірки 25217. Відомості про попередні збірки Windows див. у статті Windows 10 Insider Preview.

 

У цій статті наведено докладні вказівки щодо створення UI для віджетів Windows.

 

Розміри віджетів



 

 

Для віджетів передбачено три розміри, з яких користувач може обирати. Рекомендується створювати й враховувати всі 3 розміри та адаптувати дизайн спеціально для кожного з них. Малі та середні розміри забезпечують кращу видимість, оскільки вони частіше з'являються в динамічній стрічці. Великі розміри корисні для відображення докладнішої інформації. Підтримка декількох розмірів дозволяє користувачам легко налаштовувати віджети, які вони хочуть закріпити на дошці віджетів.

Малі

Принципи віджета, що привертають увагу, стають важливішими в дизайнерських рішеннях, прийнятих для віджетів малого розміру. Не варто намагатися втиснути у віджет малого розміру всю функціональність, яка могла б комфортно поміститися у великому віджеті. Зосередьтеся на одній користувацькій взаємодії або частині ключової інформації, яка може з'явитися тут за допомогою одного дотику.

Середні

Віджет середнього розміру займає більше місця порівняно з малим, тому на ньому можна розмістити більше функціональних можливостей або додаткової інформації. Також віджет середнього розміру може забезпечити такий самий сфокусований досвід, як і віджет малого розміру, але надавати 2-3 точки дотику.

Великі

 

Великі розміри дозволяють розмістити більше інформації, але контент має бути сфокусованим і легко сприйматися. Крім того, на великій картці можна виділити одне зображення або тему, що створить ефект більшого захоплення. Великий розмір повинен мати не більше 3-4 сенсорних цілей.

 

Колір та тематика


 

Windows 11 підтримує два режими кольорів: світлий і темний. Кожен режим складається з набору нейтральних кольорових значень, які автоматично підлаштовуються для забезпечення оптимальної контрастності. Для кожного розміру віджета, який ви підтримуєте, обов'язково створіть окремі дизайни для світлих і темних тем, щоб віджет легко інтегрувався в загальний вигляд операційної системи та обраної користувачем теми. Фон віджета можна налаштувати за допомогою суцільного світлого/темного фону, градієнтного відтінку або фону із зображенням.


 

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

 

Згідно з Настановами з питань доступності вебконтенту - The Web Content Accessibility Guidelines (WCAG) 2.0 рівень AA, коефіцієнт контрастності має становити щонайменше 4,5:1 для звичайного тексту та 3:1 для великого тексту. WCAG 2.1 вимагає контрастності щонайменше 3:1 для графіки та компонентів інтерфейсу користувача (наприклад, межі введення форми). WCAG рівня AAA вимагає контрастності щонайменше 7:1 для звичайного тексту і 4,5:1 для великого тексту. Великий текст — це текст 14 кеглем (зазвичай 18,66 пікселя) і жирним шрифтом або більшого розміру, або 18 кеглем (зазвичай 24 пікселі) і більшого розміру.

 

Поля


Кожен віджет має поле 16px навколо й Область атрибуції 48px, в якій не можна розміщувати контент. Єдиний компонент, який може розміщуватися на правому боковому та нижньому полях — це позначки нумерації сторінок. Приклади розміщення точок нумерації сторінок наведено в розділі "Нумерація сторінок". Посібника з дизайну взаємодії віджетів.

.

Для віджетів, які використовують елементи контейнера, відстань між елементами має становити 4 пікселі, а контейнери повинні торкатися країв полів. Ваш контент також повинен мати інтервали та розміри, кратні Чотирьом пікселям, щоб досягти чіткого, бездоганного піксельного дизайну на різних роздільних здатностях екрана.

Крім того, під час створення контенту варто ознайомитися з рекомендаціями щодо інтервалів і відступів у розділі "Основи дизайну контенту для додатків Windows".

Типографіка


 

Для зручності, в наступній таблиці представлено текст таблиці, що показана на зображенні вище.

 

Example

Size / Line height

Adaptive cards formula

Caption

12/16 epx

Small, Lighter

Body

14/20 epx

Default, Lighter

Body (for hyperlinks)

14/20 epx

Default, Lighter, Accent

Body Strong

14/20 epx

Default, Bolder

Body Large

18/24 epx

Medium, Lighter

Body Larget

18/24 epx

Medium, Bolder

Subtitle

20/28 epx

Large, Bolder

Title

28/36 epx

Extra Large, Bolder

 



Segoe UI - це шрифт, який використовується у Віджетах і в Windows. У наведеній вище таблиці шрифтів містяться формули, як правильно встановити потрібні стилі в Adaptive Cards Designer. Стилі шрифтів не повинні відрізнятися від зазначених вище формул. Додаткові відомості про використання Adaptive Cards Designer для створення шаблонів віджетів див. в статті Створення шаблону віджета за допомогою Adaptive Cards Designer”.

У Adaptive Cards Designer для заголовків і основного тексту використовується колір за замовчуванням, пов'язаний з темою віджета. Додатковою опцією для подальшого виділення заголовка від основного тексту є використання малопомітного варіанту кольору за замовчуванням. Акцентний колір використовується лише для гіперпосилань.

Піктограми

Зображення профілю


Якщо ваш віджет містить відображення профілів користувачів (наприклад, стрічка або потік соціальних мереж), використовуйте один з наступних доступних розмірів профілю користувача у вигляді кола: 96x96px, 48x48px, 32x32px або 24x24px.

Підказки щодо інструментів


Підказки можна використовувати, коли текст заголовка у віджеті обрізається. Найкраще, щоб текст акуратно вписувався у простір віджета і не потребував обрізання, однак це може не завжди відбуватися залежно від таких сценаріїв, як локалізація мови, масштабування системного тексту або цитування чогось (наприклад, назви статті, назви пісні). Це не стосується основного тексту віджета.




Posted on 1. February 2022

Створення одноекземплярної програми (частина 3)

Створення одноекземплярної програми (частина 3)

Одноекземплярні програми дозволяють одночасно запускати лише один екземпляр програми. Програми WinUI за замовчуванням є багатоекземплярними. Вони дозволяють запускати декілька екземплярів однієї програми одночасно, які ми називаємо кількома екземплярами. Однак, ви можете реалізувати один екземпляр залежно від варіанту використання вашої програми. Спроба запустити другий екземпляр програми з одним екземпляром призведе до того, що замість нього буде активовано головне вікно першого екземпляра. У цьому посібнику продемонстровано, як реалізувати єдиний екземпляр.

 

Наприкінці цього розділу ви зможете: 1. Вимкнути згенерований програмний код XAML. 2. Визначити власний метод MAIN для перенаправлення. 3. Тестувати єдиний екземпляр за допомогою розгортання програми.

Вимкніть згенерований програмний код XAML

Нам потрібно перевірити перенаправлення якомога раніше, ще до створення будь-яких вікон. Для цього ми повинні визначити символ "DISABLE_XAML_GENERATED_MAIN" у властивостях збірки проєкту. 

1. Двічі клацніть по назві проєкту в Solution Explorer:

2. Визначте символ DISABLE_XAML_GENERATED_MAIN нижче

DrumPad:

Визначте власний клас Program з методом Main

Налаштований файл Program.cs створюється замість запуску стандартного методу Main, оскільки він дозволяє програмі перевіряти наявність перенаправлення, що не є типовою функцією програм WinUI.

1. Перейдіть до Solution Explorer -> Клацніть правою кнопкою миші по назві проєкту -> Add -> New Item

2. У розділі Visual C# Items -> Code -> Class -> Назвіть його Program.cs -> Add

ПРИМІТКА: Ваш проєкт має виглядати так:

3. Додайте наступні простори імен:

 

Program.cs:

4. Замініть порожній клас Program наступним:

 

Program.cs:

ПРИМІТКА: Main визначає, чи слід перенаправляти або запускати новий екземпляр програми за допомогою DecideRedirection();

5. Визначте DecideRedirection() під методом Main:

 

Program.cs:

ПРИМІТКА: DecideRedirection визначає, чи було зареєстровано програму шляхом реєстрації ключа, який представляє екземпляр вашої програми. На основі результату реєстрації ключа він робить висновок, чи запущено поточний екземпляр програми, а отже, чи потрібно переспрямовувати або дозволити програмі запуститися вперше.

6. Визначте допоміжний метод OnActivated(), який розташований нижче методу DecideRedirection:

 

Program.cs:

Тестування одного екземпляра за допомогою розгортання програми

 

Досі ми тестували наш додаток за допомогою налагоджувача рішень. Водночас у нас може бути запущений лише один налагоджувач. Це заважає нам дізнатися, чи є додаток одноекземплярним, оскільки ми не можемо налагоджувати одне і те ж рішення проєкту двічі одночасно. Для перевірки ми розгорнемо додаток. Після розгортання ми зможемо запустити додаток з робочого столу, як це робиться з Microsoft Word.

1. Перейдіть до Solution Explorer -> Клацніть правою кнопкою миші по назві проєкту -> Deploy

2. Відкрийте меню "Пуск" і натисніть на поле пошуку.

3. Введіть "DrumPad" (або назву вашого додатка) в поле пошуку

4. Натисніть на іконку програми в результатах пошуку, щоб запустити програму.

5. Повторіть кроки з 2 по 4, щоб запустити ту саму програму ще раз і перевірити, чи не з'явився інший екземпляр.

Результат

 

Підсумовуємо:

У частині 1, ми дізнались, як використовувати елементи керування WinUI 3 для створення візуального рівня програми.

У частині 2, ми ознайомилися з поняттями темного режиму та вікон. 

У частині 3, ми застосували єдиний екземпляр для нашої програми.

Увесь код, який ми розглянули в цій серії блогів, знаходиться на GitHub, з різними гілками для різних етапів. Головна гілка є найповнішою. Інші гілки призначені для того, щоб показати вам, як розвивалася архітектура додатка.

Подальше навчання

Пропонуємо вам ознайомитися з деякими посиланнями на ресурси щодо створення додатків для WinUI 3 за допомогою WinAppSDK. Не припиняйте вчитися!

Більше прикладів:

WinAppSDK Samples

WinUI 3 Samples

Офіційна документація:

Official WinAppSDK GitHub Repo

Windows UI Library 3

Тепер, коли ви створили базовий додаток, ви можете легко додати інші елементи керування з WinUI 3 Controls Gallery і поекспериментувати з іншими цікавими можливостями WinAppSDK для покращення ваших програм Windows!

Source