【发布时间】:2021-01-30 21:54:22
【问题描述】:
我需要从 StrokeCollection 中获取图像,但由于 mvvm 结构,我无法访问 Visual (InkCanvas) 本身。有没有一种简单的方法可以完成这项工作?
XAML:
<InkCanvas x:Name="paintSurface" Grid.Row="0" Opacity="0.2" Strokes="{Binding Strokes}">
<InkCanvas.DefaultDrawingAttributes>
<DrawingAttributes Color="Black" Width="10" Height="10"/>
</InkCanvas.DefaultDrawingAttributes>
</InkCanvas>
视图模型:
private StrokeCollection _strokes;
public StrokeCollection Strokes {
get => _strokes;
set => SetProperty(ref _strokes, value);
}
现在我只想将 StrokeCollection 转换为某种形式的可处理图像,它是 Bitmap、BitmapImage、Mat、EmguCV Image,并不重要。 提前谢谢:)
【问题讨论】:
-
你看过这篇文章了吗? stackoverflow.com/questions/49231819/…
-
你可以在视图中渲染targetbitmap。您“只”需要从视图模型触发它或告诉视图模型它已经完成。无论如何,您可能不想对一大块 ui 进行自动化测试,但是如果您想重新使用它,您可以将代码封装在一个行为中。你需要图片吗?您可以从笔划中提取点并构建几何用作路径数据。