在仅更改笔划背景颜色的 InkCanvas 之间移动笔划? (WPF)
Moving strokes between InkCanvas with background color change of only the strokes? (WPF)
假设我有三层(从下到上),
- 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);
}
假设我有三层(从下到上),
- 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);
}