Стирание части сток в UWP

Я использую новую технологию Ink для Windows 10, используя InkCanvas/InkPresenter в UWP. Рендеринг чернил действительно хорош, за исключением того, что я не могу стереть только часть обводки. Я смотрю на OneNote, который, как я предполагаю, использует ту же технологию, и они предлагают стирать часть удара. Я знаю, что это было невозможно, когда впервые был представлен InkCanvas/InkPresenter, но мне было интересно, есть ли способ достичь этого? Может, каким-то образом замаскировать удар, чтобы подделать ластик? У кого-нибудь есть предложение?

2 ответа

Решение

Вы можете взглянуть на образец книжки-раскраски Microsoft, где вы можете стереть ячейку (Часть удара). Они создали пользовательский InkToolbar с заливкой, стиранием ячейки и многим другим.

https://github.com/Microsoft/Windows-appsample-coloringbook

Надеюсь, поможет.

Стирание части сток в UWP

В настоящее время UWP не предоставляет Erase By Point. Я думаю, что вы могли бы реализовать эту функцию с помощью специальной ручки. Только подумайте, если цвет пера непрозрачный и такой же, как InkCanvas фон. Затем используйте его для рисования существующего обводки, чтобы добиться эффекта стирания по точке. Для пользовательского пера вы можете обратиться к этому примеру кода, ниже приведен критический код.

<InkToolbarCustomPenButton x:Name="calligraphyPen"
                       CustomPen="{StaticResource CalligraphicPen}"
                       Palette="{StaticResource CalligraphicPenPalette}"
                       SelectedBrushIndex="0"
                       MinStrokeWidth="4"
                       MaxStrokeWidth="10"
                       ToolTipService.ToolTip="Calligraphy pen">
    <Border>
        <Grid>
            <TextBlock AutomationProperties.AccessibilityView="Raw" FontFamily="Segoe MDL2 Assets" Text="&#xEDFB;" Canvas.ZIndex="1"/>
            <TextBlock AutomationProperties.AccessibilityView="Raw" FontFamily="Segoe MDL2 Assets" Text="&#xF0C7;" 
                       Foreground="{x:Bind calligraphyPen.SelectedBrush, Mode=OneWay}" Canvas.ZIndex="0"/>
        </Grid>
    </Border>
    <InkToolbarCustomPenButton.ConfigurationContent>
        <InkToolbarPenConfigurationControl/>
    </InkToolbarCustomPenButton.ConfigurationContent>
</InkToolbarCustomPenButton>

Обновить

Есть ли способ отключить поведение ластика по умолчанию.

Ластик по умолчанию Внутренний инструмент в InkToolbar, мы не можем отключить его, но мы можем сделать его скрытым, как показано в ToolBar загруженное событие.

private void MyToolBar_Loaded(object sender, RoutedEventArgs e)
{
    var eraser = MyToolBar.GetToolButton(InkToolbarTool.Eraser);
    eraser.Visibility = Visibility.Collapsed;

}
Другие вопросы по тегам