Compartilhar via


InkToolbarCustomPen Classe

Definição

Representa uma caneta InkToolbar para a qual as propriedades de dica de caneta e paleta de cores de tinta, como forma, rotação e tamanho, são definidas pelo aplicativo host.

public ref class InkToolbarCustomPen : DependencyObject
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class InkToolbarCustomPen : DependencyObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class InkToolbarCustomPen : DependencyObject
Public Class InkToolbarCustomPen
Inherits DependencyObject
Herança
Object Platform::Object IInspectable DependencyObject InkToolbarCustomPen
Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 Anniversary Edition (introduzida na 10.0.14393.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v3.0)

Exemplos

Aqui está uma definição de uma caneta calligraphic personalizada.

  1. No code-behind, primeiro criamos uma classe de caneta personalizada derivada de InkToolbarCustomPen.

Uma classe de caneta personalizada deve substituir o método CreateInkDrawingAttributesCore e fornecer InkDrawingAttributes para a configuração personalizada. Neste exemplo, personalizamos os seguintes InkDrawingAttributes:

using System.Numerics;
using Windows.UI;
using Windows.UI.Input.Inking;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;

namespace Ink_Basic_InkToolbar
{
    class CalligraphicPen : InkToolbarCustomPen
    {

        public CalligraphicPen()
        {
        }

        protected override InkDrawingAttributes CreateInkDrawingAttributesCore(Brush brush, double strokeWidth)
        {
            InkDrawingAttributes inkDrawingAttributes = new InkDrawingAttributes();
            inkDrawingAttributes.PenTip = PenTipShape.Circle;
            inkDrawingAttributes.Size = new Windows.Foundation.Size(strokeWidth, strokeWidth * 20);
            SolidColorBrush solidColorBrush = brush as SolidColorBrush;
            if (solidColorBrush != null)
            {
                inkDrawingAttributes.Color = solidColorBrush.Color;
            }
            else
            {
                inkDrawingAttributes.Color = Colors.Black;
            }
            Matrix3x2 matrix = Matrix3x2.CreateRotation(.785f);
            inkDrawingAttributes.PenTipTransform = matrix;

            return inkDrawingAttributes;
        }
    }
}
  1. Na marcação, associamos nossa classe de caneta personalizada usando uma referência de extensão de marcação {StaticResource} no atributo CustomPen do elemento InkToolbarCustomPenButton (como alternativa, você pode instanciar a caneta personalizada e atribuí-la a InkToolbarCustomPenButton.CustomPen no código).

Você pode usar o InkToolbarPenConfigurationControl interno (conforme mostrado aqui) ou pode especificar uma definição inkToolbarPenConfigurationControl personalizada na declaração de caneta InkToolbar padrão.

Aqui está a declaração para a caneta personalizada definida no snippet anterior.

<!-- Set up locally defined resource dictionary. -->
<Page.Resources>
    <!-- Add the custom CalligraphicPen to the page resources. -->
    <local:CalligraphicPen x:Key="CalligraphicPen" />
    <!-- Specify the colors for the palette of the custom pen. -->
    <BrushCollection x:Key="CalligraphicPenPalette">
        <SolidColorBrush Color="Blue" />
        <SolidColorBrush Color="Red" />
    </BrushCollection>
</Page.Resources>

<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 sample" 
                   Style="{ThemeResource HeaderTextBlockStyle}" 
                   Margin="10,0,0,0" />
    </StackPanel>
    <Grid Grid.Row="1">
        <Image Source="Assets\StoreLogo.png" />
        <InkCanvas x:Name="inkCanvas" />
        <InkToolbar x:Name="inkToolbar" 
                    VerticalAlignment="Top" 
                    TargetInkCanvas="{x:Bind inkCanvas}">
            <InkToolbarCustomPenButton 
                CustomPen="{StaticResource CalligraphicPen}"
                MinStrokeWidth="1" MaxStrokeWidth="3" SelectedStrokeWidth="2"
                Palette="{StaticResource CalligraphicPenPalette}"
                SelectedBrushIndex ="1"
                ToolTipService.ToolTip="Calligraphic pen">                    
                <SymbolIcon Symbol="{x:Bind CalligraphicPenIcon}"/>                    
                <InkToolbarCustomPenButton.ConfigurationContent>
                    <InkToolbarPenConfigurationControl />
                </InkToolbarCustomPenButton.ConfigurationContent>
            </InkToolbarCustomPenButton>                
        </InkToolbar>
    </Grid>
</Grid>

Aqui está a definição de CalligraphicPenIcon do MainPage.xaml.cs arquivo deste exemplo.

namespace Ink_Basic_InkToolbar
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage_AddCustomPen : Page
    {
        // Icon for calligraphic pen custom button.
        Symbol CalligraphicPenIcon = (Symbol)0xEDFB;

        public MainPage_AddCustomPen()
        {
            this.InitializeComponent();
        }
    }
}

Comentários

Para criar uma caneta definida pelo aplicativo e um botão correspondente no InkToolbar, use essa classe em conjunto com InkToolbarCustomPenButton.

Construtores

InkToolbarCustomPen()

Inicializa uma nova instância da classe InkToolbarCustomPen .

Propriedades

Dispatcher

Obtém o CoreDispatcher ao qual esse objeto está associado. O CoreDispatcher representa uma instalação que pode acessar o DependencyObject no thread da interface do usuário, mesmo que o código seja iniciado por um thread que não seja da interface do usuário.

(Herdado de DependencyObject)

Métodos

ClearValue(DependencyProperty)

Limpa o valor local de uma propriedade de dependência.

(Herdado de DependencyObject)
CreateInkDrawingAttributes(Brush, Double)

Recupera os atributos InkToolbarCustomPen usados para um InkToolbarPenConfigurationControl.

CreateInkDrawingAttributesCore(Brush, Double)

Quando substituído em uma classe derivada, recupera um objeto InkDrawingAttributes usado para especificar ConfigurationContent para um InkToolbarCustomPen.

Esse método não é chamado pelo código do aplicativo.

GetAnimationBaseValue(DependencyProperty)

Retorna qualquer valor base estabelecido para uma propriedade de dependência, que se aplicaria nos casos em que uma animação não está ativa.

(Herdado de DependencyObject)
GetValue(DependencyProperty)

Retorna o valor efetivo atual de uma propriedade de dependência de um DependencyObject.

(Herdado de DependencyObject)
ReadLocalValue(DependencyProperty)

Retorna o valor local de uma propriedade de dependência, se um valor local for definido.

(Herdado de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra uma função de notificação para escutar alterações em uma DependencyProperty específica nessa instância dependencyObject .

(Herdado de DependencyObject)
SetValue(DependencyProperty, Object)

Define o valor local de uma propriedade de dependência em um DependencyObject.

(Herdado de DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Cancela uma notificação de alteração que foi registrada anteriormente chamando RegisterPropertyChangedCallback.

(Herdado de DependencyObject)

Aplica-se a

Confira também