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
Usare la parola chiave field per semplificare la scrittura di proprietà in C#
Usare i generics di C# con la clausola nameof in modo semplificato
Esporre workflow come server MCP con Azure Logic Apps
Utilizzare AbortController per cancellare operazioni asincrone in JavaScript
Keynote .NET Conference Italia 2025
Canary release con .NET Aspire
Personalizzare le pagine di errore su Azure App Service
GitHub Copilot CLI in ambienti offline
Utilizzare i named query filter di Entity Framework
Eseguire i pre-commit hook di git con dependabot
Leggere i parametri da riga di comando in una file based app .NET
Blue/Green Release in locale con .NET Aspire


