【问题标题】:How to change the size of InkCanvas Strokes in UWP?如何在 UWP 中更改 InkCanvas Strokes 的大小?
【发布时间】:2016-09-05 19:49:08
【问题描述】:

我的 UWP 应用中的 InkCanvas 有一个未解决的问题。

我将我的笔画从 InKCanvas 保存在 SQLite 数据库中,测量结果为 a*b。现在我想在另一个 InkCanvas 上显示这个 Strokes,其尺寸与 a*b 的 InkCanvas 不同(例如 a/2 * b/2)。

如何更改笔划的大小?我尝试使用:

var allStrokes = myInkCanvas.InkPresenter.StrokeContainer.GetStrokes();
foreach(var item in allStrokes)
{
    item.PointTransform() = ...// I tried to transform my Strokey with a 3x2 Matrix
                               // But it didn't work. 
}

也许有人可以帮忙。

【问题讨论】:

    标签: c# resize uwp transform inkcanvas


    【解决方案1】:

    矩阵转换对我有用。

    我使用了Matrix3x2.CreateScale工厂方法如下:

    var strokes = InkDisplay.InkPresenter.StrokeContainer.GetStrokes();
    foreach ( var stroke in strokes )
    {
        stroke.PointTransform = 
           Matrix3x2.CreateScale( 
              xScale,
              yScale 
           );
    }
    

    请注意,xScaleyScale 值表示相对比例,这意味着当您从大小为 X*Y 的墨迹画布转到大小为 (X/2)*(Y*2) 的墨迹画布时,值将是 xScale = 0.5yScale = 2

    你可以看到我创建的示例on my GitHub

    【讨论】:

    • 谢谢。我的问题是对矩阵的错误使用。我手动创建了它,但出了点问题。现在一切都与您的代码完美配合。尤其是使用 Matrix3x2.CreateScale(x, y) 方法。
    • 太好了,很高兴它有帮助:-)。请标记我的答案,以便问题得到解决:-)。
    猜你喜欢
    • 2016-05-16
    • 1970-01-01
    • 2021-02-02
    • 2019-02-22
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多