我正在通过UWP中的InkCanvas / InkPresenter使用适用于Windows 10的新Ink技术。墨水渲染真的很好,除了我似乎无法擦除笔画的一部分。我正在看的是OneNote,我假设使用的是相同的技术,并且它们确实提供了笔画部分的擦除功能。我知道第一次引入InkCanvas / InkPresenter时是不可能的,但是我想知道是否有一种方法可以实现这一目标?可以通过某种方式掩盖笔触来伪造橡皮擦吗?有人有建议吗?
答案 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="" Canvas.ZIndex="1"/>
<TextBlock AutomationProperties.AccessibilityView="Raw" FontFamily="Segoe MDL2 Assets" Text=""
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;
}