Поделиться через


InkPresenter Класс

Определение

Предоставляет свойства, методы и события для управления вводом, обработкой и отрисовкой рукописного ввода (стандартного и измененного) для элемента управления InkCanvas .

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
Наследование
Object Platform::Object IInspectable InkPresenter
Атрибуты

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

Здесь мы покажем, как наложить рукописные заметки на изображение. В этом примере данные рукописного ввода не записываются и не сохраняются соответствующим inkPresenter.

<ScrollViewer>
  <Grid>
    <Image Source="<path>"></Image>
    <InkCanvas x:Name="inkCanvas"></InkCanvas>
  </Grid>
</ScrollView

Здесь мы настраиваем InkPresenter для интерпретации данных, вводимые пером или мышью, в качестве росчерков пера. Мы также задаем некоторые исходные атрибуты росчерка пера, используемые для вывода росчерков на 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);
}

Атрибуты росчерка пера можно задавать динамически в соответствии с предпочтениями пользователя или требованиями к приложению.

Здесь мы позволяем пользователю выбирать цвет чернил в списке.

<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>

Затем мы обрабатываем изменения в выбранном цвете и обновляем соответствующим образом атрибуты росчерка пера.

// 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);
    }
}

Комментарии

Для универсальных приложений для Windows рекомендуется использовать InkPresenter и элемент управления InkCanvas вместо InkManager.

Невозможно создать экземпляр класса InkPresenter напрямую. Он возвращается как свойство объекта InkCanvas .

Примечание

Стандартный ввод рукописного ввода (кончик пера или кончик ластика или кнопка) не изменяется с помощью дополнительных возможности, таких как кнопка пера, правая кнопка мыши или аналогичное (см. RightDragAction).

По умолчанию как стандартный, так и измененный ввод рукописного ввода полностью управляется InkPresenter и отрисовывается в InkCanvas в виде росчерка пера или росчерка стирания на основе InkInputProcessingConfiguration.Mode.

Измененные входные данные можно передать приложению для обработки, задав inkInputProcessingConfiguration.RightDragAction значение InkInputRightDragAction.LeaveUnprocessed.

Все входные данные можно передать в приложение для обработки, установив для параметра InkInputProcessingConfiguration.Mode значение Нет.

Если оставить входные данные необработанные inkPresenter , вы можете поддерживать настраиваемый интерфейс рукописного ввода и расширенные функции, такие как выбор.

Для полного управления вводом рукописного ввода и отображения его в контексте устройства Direct2D универсального приложения для Windows вместо элемента управления InkCanvas по умолчанию вызовите ActivateCustomDrying перед загрузкой InkCanvas. Для этого требуется объект IInkD2DRenderer для управления вводом рукописного ввода (см. пример сложного рукописного ввода).

Журнал версий

Версия Windows Версия пакета SDK Добавленная стоимость
1703 15063 HighContrastAdjustment
1803 17134 InputConfiguration

Свойства

HighContrastAdjustment

Возвращает или задает способ обработки объекта InkPresenter входных данных (стандартных и измененных) из связанного элемента управления InkCanvas , когда система находится в режиме высокой контрастности.

InputConfiguration

Возвращает типы вторичных входных данных, которые могут обрабатываться объектом InkPresenter .

InputDeviceTypes

Возвращает или задает тип устройства ввода, из которого inkPresenter собирает входные данные для создания и отрисовки InkStroke. Значение по умолчанию — Перо.

InputProcessingConfiguration

Возвращает способ обработки входных данных объектом InkPresenter .

IsInputEnabled

Возвращает или задает значение, указывающее, включен ли ввод для рукописного ввода.

StrokeContainer

Возвращает или задает объект InkStrokeContainer для хранения коллекции объектов InkStroke , отрисовываемой InkPresenter, и управления ею.

Изменения, внесенные в любой из росчерков пера в контейнере росчерков, сразу же отрисовываются в поверхности рисования, связанной с InkPresenter.

StrokeInput

Возвращает объект InkStrokeInput для управления событиями ввода рукописного ввода.

UnprocessedInput

Получает входные данные (стандартные или измененные) из связанного элемента управления InkCanvas и передает данные для пользовательской обработки приложением. Данные не обрабатываются InkPresenter.

Примечание

Стандартные входные данные не изменяются с помощью дополнительных вариантов, таких как кнопка пера, правая кнопка мыши или аналогичное.

Используйте InkInputProcessingConfiguration , чтобы указать входные данные, передаваемые через InkUnprocessedInput в приложение для пользовательской обработки.

Методы

ActivateCustomDrying()

Указывает, что приложению требуется полный контроль над отрисовкой рукописного ввода.

По умолчанию рукописные данные обрабатываются в фоновом потоке с низкой задержкой и отображаются как «влажные» в процессе ввода. После завершения росчерка (нажатие пера или нажатия кнопки мыши) он обрабатывается в потоке пользовательского интерфейса и отображается "сухим" на уровне отрисовки (над содержимым приложения и заменой мокрого рукописного фрагмента).

Модели размещения InkPresenter

InkCanvas

Вызывая ActivateCustomDrying (до загрузки элемента InkCanvas), приложение создает объект InkSynchronizer, чтобы настроить отображение росчерка пера сухим в SurfaceImageSource или VirtualSurfaceImageSource. Например, росчерк пера можно преобразовать в растровый формат и интегрировать в содержимое приложения вместо отдельного слоя InkCanvas.

InkDesktopHost (Windows 10 версии 1511 и более поздних версий)

Приложения Win32 могут размещать InkPresenter в InkDesktopHost с помощью визуального дерева DirectComposition.

Для этого требуется объект IInkD2DRenderer для управления вводом рукописного ввода (см. пример сложного рукописного ввода).

CoreInkPresenterHost (Windows 10 Fall Creators Update и более новые версии)

Разместите InkPresenter в вашей windows.Пользовательского интерфейса.Дерево композиции без связанного элемента управления InkCanvas .

CopyDefaultDrawingAttributes()

Извлекает атрибуты InkDrawingAttributes , используемые InkPresenter при отрисовке нового объекта InkStroke в элементе управления InkCanvas .

Этот метод используется в сочетании с атрибутами UpdateDefaultDrawingAttributes для задания атрибутов рисования во время выполнения.

SetPredefinedConfiguration(InkPresenterPredefinedConfiguration)

Задает поведение рукописного ввода для одной или нескольких точек контакта в связанном элементе управления InkCanvas .

UpdateDefaultDrawingAttributes(InkDrawingAttributes)

Задает атрибуты InkDrawingAttributes , используемые InkPresenter при отрисовке нового объекта InkStroke в элементе управления InkCanvas .

Этот метод используется в сочетании с Атрибутами CopyDefaultDrawingAttributes для задания атрибутов рисования во время выполнения.

События

StrokesCollected

Происходит при обработке одним или несколькими росчерками рукописного ввода ("мокрым" для "высыхания") потоком приложения.

По умолчанию росчерк пера обрабатывается в фоновом потоке с низкой задержкой и отображается мокрым при рисовании. После завершения росчерка (нажатие пера или нажатия кнопки мыши) штрих обрабатывается в потоке пользовательского интерфейса и отображается сухим на уровне InkCanvas (над содержимым приложения). Если поток пользовательского интерфейса занят, при появлении потока может быть обработано (собрано) несколько росчерков рукописного ввода.

StrokesErased

Происходит при удалении объекта InkStroke из элемента управления InkCanvas с помощью ластика пера или кончика пера, если для параметра Modeзадано значение Стирание.

Применяется к

См. также раздел