InkPresenter Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
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
- Наследование
- Атрибуты
Требования к 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Вызывая 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задано значение Стирание. |
Применяется к
См. также раздел
- Взаимодействие с помощью пера
- Начало работы: поддержка рукописного ввода в приложении UWP
- Пример анализа рукописного ввода (базовый) (C#)
- Пример распознавания рукописного ввода (C#)
- Сохранение и загрузка росчерков пера из файла Ink Serialized Format (ISF)
- Сохранение и загрузка росчерков пера из буфера обмена
- Пример расположения и ориентации панели инструментов рукописного ввода (базовый)
- Пример расположения и ориентации панели инструментов рукописного ввода (динамичный)
- Пример раскраски
- Пример семейных заметок
- Пример рукописного ввода (JavaScript)
- Пример простого рукописного ввода (C#/C++)
- Пример сложного рукописного ввода (C++)
- Пример анализа рукописного ввода