【问题标题】:Is there anything in Xamarin forms which is equivalent to "Path" in WPF?Xamarin 表单中是否有任何内容相当于 WPF 中的“路径”?
【发布时间】:2019-10-12 17:12:35
【问题描述】:

我正在寻找在图像控件中嵌入矢量路径数据。 WPF 有一个控制“路径”,它获取数据并渲染图像。 Xamarin 表单中有什么可以做到这一点吗?

【问题讨论】:

标签: wpf xamarin svg xamarin.forms path


【解决方案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 指出的那样,您可以使用第 3 方库,它基本上就是这样做的。

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 2019-07-16
    • 1970-01-01
    • 2020-11-07
    • 2018-07-21
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    相关资源
    最近更新 更多