InkPresenter Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
public ref class InkPresenter sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class InkPresenter final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class InkPresenter
Public NotInheritable Class InkPresenter
- Herança
- Atributos
Requisitos do Windows
Família de dispositivos |
Windows 10 (introduzida na 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v1.0)
|
Exemplos
Aqui, mostramos como sobrepor anotações à tinta em uma imagem. Para este exemplo, os dados de tinta não são capturados ou salvos por um InkPresenter correspondente.
<ScrollViewer>
<Grid>
<Image Source="<path>"></Image>
<InkCanvas x:Name="inkCanvas"></InkCanvas>
</Grid>
</ScrollView
Aqui, configuramos o InkPresenter para interpretar dados de entrada da caneta e do mouse como traços de tinta. Também definimos alguns atributos iniciais de traço de tinta usados para renderizar traços para o InkCanvas.
public MainPage()
{
this.InitializeComponent();
// Set supported inking device types.
inkCanvas.InkPresenter.InputDeviceTypes =
Windows.UI.Core.CoreInputDeviceTypes.Mouse |
Windows.UI.Core.CoreInputDeviceTypes.Pen;
// Set initial ink stroke attributes.
InkDrawingAttributes drawingAttributes = new InkDrawingAttributes();
drawingAttributes.Color = Windows.UI.Colors.Black;
drawingAttributes.IgnorePressure = false;
drawingAttributes.FitToCurve = true;
inkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes);
}
Atributos de traço de tinta podem ser definidos dinamicamente para acomodar as preferências do usuário ou requisitos do aplicativo.
Aqui, permitimos que um usuário escolha suas preferências em uma lista de cores de tinta.
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel x:Name="HeaderPanel" Orientation="Horizontal" Grid.Row="0">
<TextBlock x:Name="Header"
Text="Basic ink customization sample"
VerticalAlignment="Center"
Style="{ThemeResource HeaderTextBlockStyle}"
Margin="10,0,0,0" />
<TextBlock Text="Color:"
Style="{StaticResource SubheaderTextBlockStyle}"
VerticalAlignment="Center"
Margin="50,0,10,0"/>
<ComboBox x:Name="PenColor"
VerticalAlignment="Center"
SelectedIndex="0"
SelectionChanged="OnPenColorChanged">
<ComboBoxItem Content="Black"/>
<ComboBoxItem Content="Red"/>
</ComboBox>
</StackPanel>
<Grid Grid.Row="1">
<Image Source="Assets\StoreLogo.png" />
<InkCanvas x:Name="inkCanvas" />
</Grid>
</Grid>
Em seguida, manipulamos as alterações feitas na cor selecionada e atualizamos os atributos de traço de tinta de acordo.
// Update ink stroke color for new strokes.
private void OnPenColorChanged(object sender, SelectionChangedEventArgs e)
{
if (inkCanvas != null)
{
InkDrawingAttributes drawingAttributes =
inkCanvas.InkPresenter.CopyDefaultDrawingAttributes();
string value = ((ComboBoxItem)PenColor.SelectedItem).Content.ToString();
switch (value)
{
case "Black":
drawingAttributes.Color = Windows.UI.Colors.Black;
break;
case "Red":
drawingAttributes.Color = Windows.UI.Colors.Red;
break;
default:
drawingAttributes.Color = Windows.UI.Colors.Black;
break;
};
inkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes);
}
}
Comentários
Para aplicativos Universais do Windows, recomendamos usar InkPresenter e o controle InkCanvas em vez de InkManager.
A classe InkPresenter não pode ser instanciada diretamente. Ele é retornado como uma propriedade de um objeto InkCanvas .
Observação
A entrada de tinta padrão (dica de caneta ou botão de borracha) não é modificada com uma acessibilidade secundária, como um botão de barril de caneta, botão direito do mouse ou semelhante (consulte RightDragAction).
Por padrão, a entrada de tinta padrão e modificada é gerenciada inteiramente pelo InkPresenter e renderizada para o InkCanvas como um traço de tinta ou um traço de apagamento, com base em InkInputProcessingConfiguration.Mode.
A entrada modificada pode ser passada para seu aplicativo para processamento definindo InkInputProcessingConfiguration.RightDragAction como InkInputRightDragAction.LeaveUnprocessed.
Todas as entradas podem ser passadas para seu aplicativo para processamento definindo InkInputProcessingConfiguration.Mode como None.
Deixar a entrada não processada pelo InkPresenter permite que você dê suporte a uma experiência de tinta personalizada e funcionalidade estendida, como seleção.
Para ter controle completo da entrada à tinta e renderizá-la para o contexto do dispositivo Direct2D do aplicativo Universal do Windows, em vez do controle Padrão inkCanvas , chame ActivateCustomDrying antes de carregar o InkCanvas. Isso requer um objeto IInkD2DRenderer para gerenciar a entrada de tinta (consulte o exemplo de tinta complexa).
Histórico de versão
Versão do Windows | Versão do SDK | Valor adicionado |
---|---|---|
1703 | 15063 | HighContrastAdjustment |
1803 | 17134 | InputConfiguration |
Propriedades
HighContrastAdjustment |
Obtém ou define como o objeto InkPresenter manipula a entrada (padrão e modificada) do controle InkCanvas associado quando o sistema está no modo de alto contraste. |
InputConfiguration |
Obtém quais tipos de entrada secundária podem ser processados pelo objeto InkPresenter . |
InputDeviceTypes |
Obtém ou define o tipo de dispositivo de entrada do qual os dados de entrada são coletados pelo InkPresenter para construir e renderizar um InkStroke. O padrão é Caneta. |
InputProcessingConfiguration |
Obtém como a entrada é processada pelo objeto InkPresenter . |
IsInputEnabled |
Obtém ou define se a entrada está habilitada para escrita à tinta. |
StrokeContainer |
Obtém ou define um objeto InkStrokeContainer para armazenar e gerenciar a coleção de objetos InkStroke renderizados pelo InkPresenter. As modificações feitas em qualquer um dos traços de tinta no contêiner de traço são renderizadas imediatamente na superfície de desenho associada ao InkPresenter. |
StrokeInput |
Obtém um objeto InkStrokeInput para gerenciar eventos de entrada de tinta. |
UnprocessedInput |
Obtém a entrada (padrão ou modificada) do controle InkCanvas associado e passa os dados para processamento personalizado pelo aplicativo. Os dados não são processados pelo InkPresenter. Observação A entrada padrão não é modificada com uma acessibilidade secundária, como um botão de barril de caneta, botão direito do mouse ou semelhante. Use InkInputProcessingConfiguration para indicar a entrada a ser passada como InkUnprocessedInput para seu aplicativo para processamento personalizado. |
Métodos
ActivateCustomDrying() |
Indica que seu aplicativo requer controle completo da renderização de entrada à tinta. Por padrão, a entrada de tinta é processada em um thread em segundo plano e renderizada como "molhada" conforme é desenhada. Quando o traço é concluído (caneta ou dedo levantado ou botão do mouse liberado), o traço é processado no thread da interface do usuário e renderizado "seco" para a camada de renderização (acima do conteúdo do aplicativo e substituindo a tinta molhada). Modelos de hospedagem do InkPresenterChamar ActivateCustomDrying (antes de o InkCanvas ser carregado) faz com que um aplicativo crie um objeto InkSynchronizer para personalizar como um traço de tinta é renderizado como seco para um SurfaceImageSource ou VirtualSurfaceImageSource. Por exemplo, um traço de tinta poderia ser rasterizado e integrado no conteúdo de um aplicativo em vez de uma camada InkCanvas separada. InkDesktopHost (Windows 10 versão 1511 e mais recente) Os aplicativos Win32 podem hospedar um InkPresenter em um InkDesktopHost usando a árvore visual DirectComposition. Isso requer um objeto IInkD2DRenderer para gerenciar a entrada de tinta (consulte o exemplo de tinta complexa). CoreInkPresenterHost (Windows 10 Fall Creators Update e mais recente) Hospede um InkPresenter em seu próprio Windows.UI.Árvore de composição sem um controle InkCanvas associado. |
CopyDefaultDrawingAttributes() |
Recupera os InkDrawingAttributes usados pelo InkPresenter ao renderizar um novo InkStroke em um controle InkCanvas . Esse método é usado em conjunto com UpdateDefaultDrawingAttributes para definir atributos de desenho em tempo de execução. |
SetPredefinedConfiguration(InkPresenterPredefinedConfiguration) |
Define o comportamento de escrita à tinta de um ou mais pontos de contato no controle InkCanvas associado. |
UpdateDefaultDrawingAttributes(InkDrawingAttributes) |
Define o InkDrawingAttributes usado pelo InkPresenter ao renderizar um novo InkStroke em um controle InkCanvas . Esse método é usado em conjunto com CopyDefaultDrawingAttributes para definir atributos de desenho em tempo de execução. |
Eventos
StrokesCollected |
Ocorre quando um ou mais traços de tinta são processados ("molhado" para "seco") pelo thread do aplicativo. Por padrão, um traço de tinta é processado em um thread de fundo de baixa latência e renderizado molhado à medida que é desenhado. Quando o traço é concluído (caneta ou dedo levantado ou botão do mouse liberado), o traço é processado no thread da interface do usuário e renderizado seco para a camada InkCanvas (acima do conteúdo do aplicativo). Se o thread da interface do usuário estiver ocupado, mais de um traço de tinta poderá ser processado (coletado) quando o thread ficar disponível. |
StrokesErased |
Ocorre quando um objeto InkStroke é removido de um controle InkCanvas usando a borracha de caneta ou a dica de caneta quando Mode é definido como Apagamento. |
Aplica-se a
Confira também
- Interações por caneta
- Introdução: oferecer suporte à tinta em seu aplicativo UWP
- Exemplo de análise de tinta (básico) (C#)
- Exemplo de reconhecimento de manuscrito à tinta (C#)
- Salvar e carregar traços de tinta de um arquivo ISF (Ink Serialized Format)
- Salvar e carregar traços de tinta da área de transferência
- Exemplo de localização e orientação da barra de ferramentas de tinta (básico)
- Exemplo de localização e orientação da barra de ferramentas de tinta (dinâmico)
- Exemplo de livro de colorir
- Exemplo de anotações da família
- Exemplo de escrita à tinta (JavaScript)
- Exemplo de escrita à tinta simples (C#/C++)
- Exemplo de escrita à tinta complexa (C++)
- Exemplo de análise de tinta