如何从Xamarin.forms的SkiaSharp中请求重新绘制?

5

我正在使用Xamarin.forms开发应用程序。 我使用SkiaSharp进行2D视图绘制。

我能够在iOS PCL端使用SetNeedDisplay来进行动画。

但我想从Forms PCL中调用它。 是否有类似的方法?


听起来你需要使用X.Forms依赖服务。请参见:https://developer.xamarin.com/guides/xamarin-forms/dependency-service/ - jgoldberger - MSFT
@jgoldberger 是的。我可以使用许多其他方法来完成它。但我正在寻找更简单的方法。(例如由skiasharp.forms提供的方式) - Bright Lee
1
请查看该线程:https://forums.xamarin.com/discussion/82523/skiasharp-direct-drawing - SushiHangover
@SushiHangover 您好Sushi,感谢您多次帮助。您给我的链接有点复杂。因此我决定只使用OnPropertyChanged(来自表单)并调用SetNeedsDisplay(在iOS上)和Invalidate(在Android上)每个自定义渲染器。这对我很有效且更容易操作。 - Bright Lee
1个回答

7

1
我几个月前添加了这个功能,但它在一个单独的NuGet包中:https://www.nuget.org/packages/SkiaSharp.Views.Forms 请查看发布说明:https://github.com/mono/SkiaSharp/releases/ - Matthew
1
而且你是对的,不需要自定义渲染器 - 甚至可以使用GL视图进行硬件加速:https://developer.xamarin.com/api/namespace/SkiaSharp.Views.Forms/ - Matthew
我已经进行了全部替换。它工作得非常好,除了我不得不加上canvas.Scale(2)使其与之前的屏幕保持一致之外。这正确吗?我不需要将比例设置为2。也许比例2是默认值,现在变成了1? - Bright Lee
嗨,马修,我检查了更新的示例,并找到了一个使用e.Info.Width测量比例尺的代码。它运行良好。谢谢! - Bright Lee
1
我还没有注意到任何缺点,甚至可以说它可能是更好的选择。关于透明度,你能在GitHub上创建一个问题吗:https://github.com/mono/SkiaSharp。它应该会变成透明的,但我可能错过了设置这个选项。透明度在渲染时会增加额外的性能损失,但我认为对大多数情况来说不会有太大影响。 - Matthew
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接