首页 > 解决方案 > 如何在uwp中保存全屏墨水文件?

问题描述

我有一个关于在 uwp 中保存墨迹文件(包括墨迹的元数据文件 .gif)的问题。

(墨水表示用户绘制的东西)

目前,我只能保存属于 inkcanvas 的墨水范围,而不是全屏 inkcanvas

inkcanvas.InkPresenter.StrokeContainer.SaveAsync(outputStream);

这种方式只节省墨水,而不是inkcanvas的全屏。

我想向用户显示墨水和全屏,所以我需要墨水和全屏

这种方式可行吗?

请任何帮助!谢谢

标签: c#uwpfullscreeninkcanvas

解决方案


一种解决方法是在画布上绘制 2 个不可见的点,一个在左上角,一个在右下角。

在调用之前将它们添加到StrokeContainer.SaveAsync.

private void AddInvisibleDotsAtCorners()
{
    var inkStrokeBuilder = new InkStrokeBuilder();
    var stroke1 = inkStrokeBuilder.CreateStrokeFromInkPoints(
        new InkPoint[] 
        {
            new InkPoint(new Point(0, 0), 0.0f)
        }, System.Numerics.Matrix3x2.Identity);

    var stroke2 = inkStrokeBuilder.CreateStrokeFromInkPoints(
        new InkPoint[]
        {
            new InkPoint(new Point(inkCanvas.ActualWidth, inkCanvas.ActualHeight), 0.0f)
        }, System.Numerics.Matrix3x2.Identity);
    inkCanvas.InkPresenter.StrokeContainer.AddStroke(stroke1);
    inkCanvas.InkPresenter.StrokeContainer.AddStroke(stroke2);
}

然后在通话StrokeContainer.SaveAsync完成后将其删除。


推荐阅读