La DirectInk platform è il nuovo set di API disponibili nella Universal Windows Platform dedicate al digital inking. A differenza delle precedenti versioni di WinRT la nuova DirectInk Platform ci permette senza troppa fatica di beneficiare della stessa inking experience che Microsoft Edge e OneNote offrono. In Windows 8.1 infatti era necessario gestire manualmente la superficie di disegno, rimanendo in ascolto di specifici eventi e renderizzando le varie "pennellate" dell'utente. Con Windows 10 le cose si semplificano, infatti per iniziare a utilizzare le feature built-in di inking della piattaforma ci basta utilizzare un unico, e nuovo, controllo XAML: l'InkCanvas.
<Page x:Class="App1.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:App1" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <InkCanvas x:Name="myInkSurface" /> </Page>
Una volta fatto questo, direttamente dal file di code behind possiamo impostare tutte le varie proprietà del nostro pennello tramite la classe InkDrawingAttributes e l'InkPresenter in questo modo:
public sealed partial class MainPage : Page { public MainPage() { InitializeComponent(); Loaded += ApplicationLoaded; } private void ApplicationLoaded(object sender, RoutedEventArgs e) { InkDrawingAttributes attr = new InkDrawingAttributes(); attr.Color = Colors.Crimson; attr.PenTip = PenTipShape.Circle; attr.Size = new Size(2, 6); myInkSurface.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse; myInkSurface.InkPresenter.UpdateDefaultDrawingAttributes(attr); } }
Delle impostazioni di questo tipo di permettono di ottenere un risultato del genere:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Come migrare da una form non tipizzata a una form tipizzata in Angular
Usare lo spread operator con i collection initializer in C#
Creare alias per tipi generici e tuple in C#
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Eseguire operazioni con timeout in React
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Utilizzare domini personalizzati gestiti automaticamente con Azure Container Apps
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Recuperare un elemento inserito nella cache del browser tramite API JavaScript