删除UWP中的笔画部分

时间:2018-12-05 12:11:56

标签: uwp inkcanvas eraser

我正在通过UWP中的InkCanvas / InkPresenter使用适用于Windows 10的新Ink技术。墨水渲染真的很好,除了我似乎无法擦除笔画的一部分。我正在看的是OneNote,我假设使用的是相同的技术,并且它们确实提供了笔画部分的擦除功能。我知道第一次引入InkCanvas / InkPresenter时是不可能的,但是我想知道是否有一种方法可以实现这一目标?可以通过某种方式掩盖笔触来伪造橡皮擦吗?有人有建议吗?

2 个答案:

答案 0 :(得分:0)

您可以查看Microsoft的图画书示例,在其中可以删除单元格(笔画的一部分)。他们创建了一个自定义InkToolbar,其中包含洪水填充,擦除单元格等等。

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

希望有帮助。

答案 1 :(得分:0)

  

删除UWP中笔画的一部分

当前,UWP尚未提供按点擦除。我认为您可以使用定制墨水笔来实现此功能。试想一下,如果笔的颜色是不透明的并且与InkCanvas背景相同。然后用它来绘制现有笔画以达到逐点擦除的效果。对于定制笔,您可以参考以下code sample,这是关键代码。

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

}