InkCanvas保存会产生错误的尺寸

时间:2017-12-10 21:56:18

标签: c# visual-studio uwp

我使用具有设定宽度和高度的画布。它是500x500大,我也想用这种方法保存它:

background-color: mat-color($accent);

但是当我这样做时,完成的.gif文件被裁剪并具有类似421x643的尺寸。

我可以改变什么来解决这个问题?

2 个答案:

答案 0 :(得分:0)

此代码await MyInkCanvas.InkPresenter.StrokeContainer.SaveAsync(stream);用于将墨迹笔划集合保存到文件中。这与将InkCanvas控件的内容呈现为图像并不完全相同。如果笔划超出InkCanvas,则生成的.gif维度将大于原始InkCanvas的维度,反之亦然。

如果您的主要目标是将InkCanvas的内容保存为图像(而不是您计划在稍后的某个时间内加载到InkCanvas中的墨迹),请使用{{3} }。

答案 1 :(得分:0)

这是一个已知问题。你可以在Win2D Github issue上看到它。

  

问题似乎是InkStroke.GetBounds没有考虑bezier曲率,所以它只报告笔画主控制点的边界。

请参考shawnhar' comment及其解决方法。

  

解决方法是将墨迹笔划转换为Win2D几何体(使用CanvasGeometry.CreateInk),然后使用Win2D几何API查询其边界。这对于所有钢笔墨水笔划都是准确的,但如果您使用铅笔墨水样式则不起作用。