Xamarin形式中是否有任何东西等效于WPF中的“路径”?

时间:2019-05-27 06:33:08

标签: wpf xamarin svg xamarin.forms path

我正在寻找在Image控件中嵌入矢量路径数据的方法。 WPF有一个控件“路径”,该路径获取数据并渲染图像。 Xamarin表格中有什么可以做的吗?

1 个答案:

答案 0 :(得分:1)

总之,不。 Xamarin Forms和WPF在渲染层上根本不同。

WPF通过milcore紧密集成到Direct3D中,这使开发人员可以重新构建所有Windows GUI元素(按钮,复选框,文本块等)。加上模板,这就是WPF中的“ P”是如此难以置信的灵活性。

不幸的是,这要付出巨大的代价:性能。手持设备无法提供支持这种引擎所需的带宽,因此Xamarin Forms必须提供使用各个操作系统的本机GUI控件实现的类。在这方面,它更接近WinForms。这意味着Xamarin Forms控件的基本集合必须是所有受支持的构建类型(如iOS,Android,UWP等)通用的控件。最重要的是,任何需要使用Path这种精细粒度的控件都可能如果在Forms中实施,则在这些平台上运行太慢,而您无论如何都必须以本地方式实施它们。

如果您想自己走这条路,那么可以通过在PCL项目中基于View(例如)创建自定义控件,然后提供a native renderer for it in each of your targets来完成,例如:

// Android renderer for your custom control
[assembly: ExportRenderer(typeof(YourCustomControl), typeof(YourCustomControlRenderer))]
namespace Your.Project.Namespace
{
    public class YourCustomControlRenderer : VisualElementRenderer<YourCustomControl>
    {
        protected override void OnDraw(Canvas canvas)
        {
            ... etc ...
            canvas.DrawRect(new RectF(drawRect), bkgPaint);
            ... etc ...
        }
    }
}

或者,正如SushiuHangover指出的那样,您可以使用3rd-party lib,基本上无论如何都将这样做。