wpf - 在InkCanvas之间移动笔触,而仅更改笔触的背景颜色? (WPF)

标签 wpf xaml mvvm inkcanvas

假设我有三层(从下到上),

  • InkCanvas(最低Z级别),
  • InkCanvas(用于书写),
  • InkCanvas(最高的z级别,在顶部,用于绘制)。

  • 在MVVM(WPF)中,如何将笔画的捕获从最高的z级别移到最低的z级别? (移动时,笔划的边界矩形将用黄色填充。也就是说,仅包围笔划的区域的背景色将变为黄色,其余的InkCanvas将保持透明。)另外,我希望将笔触保持在目标InkCanvas中的相同坐标处。

    TIA

    最佳答案

    如果我理解正确,则可以为黄色矩形添加一个附加的底层,并在创建它们后立即将其从顶层移到另一层。

    XAML:

    <Grid>
        <Canvas x:Name="canvas"/>
        <InkPresenter x:Name="inkPresenter"/>
        <InkCanvas x:Name="inkCanvas" StrokeCollected="InkCanvas_StrokeCollected" Background="Transparent"/>
    </Grid>
    

    后面的代码:
    void InkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e) {
        var stroke = e.Stroke;
        inkCanvas.Strokes.Remove(stroke);
        inkPresenter.Strokes.Add(stroke);
        var bounds = stroke.GetBounds();
        var yellowRect = new Rectangle { Width = bounds.Width, Height = bounds.Height, Fill = Brushes.Yellow };
        Canvas.SetLeft(yellowRect, bounds.X);
        Canvas.SetTop(yellowRect, bounds.Y);
        canvas.Children.Add(yellowRect);
    }
    

    关于wpf - 在InkCanvas之间移动笔触,而仅更改笔触的背景颜色? (WPF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42082126/

    相关文章:

    c# - 窗口形式 c# 对房间列表进行排序,这是一个字符串

    wpf - 如果内容适合,则禁用 ScrollViewer VerticalScrollBarVisible

    wpf - WPF 中缺少对接和锚定

    wpf - 不能将样式建立在另一种样式的基础上

    c# - WPF MVVMLight Messenger UI 线程问题

    c# - TextBox LostFocus 事件发生得太频繁

    c# - 如何通过 WPF DataTrigger 在多值转换器中传递多个参数

    c# - 如何在 WPF 中正确绑定(bind)我的模型?

    javascript - kendoListBox 不是函数

    silverlight - Silverlight3中MVVM绑定(bind)ItemsControl获取父控件DataContext