【问题标题】:How to draw arbitrary interactive shapes at any position on the screen using Xamarin.Forms? [closed]如何使用 Xamarin.Forms 在屏幕上的任何位置绘制任意交互式形状? [关闭]
【发布时间】:2021-12-16 08:05:29
【问题描述】:

需要绘制几个不同形状的多边形,并在屏幕上的某些位置将它们彼此靠近放置。在这种情况下,必须能够使每个图形具有交互性,即在被点击时具有它们自己的属性和动作。在这种情况下,图形必须位于透明层上并且能够相互重叠。这可能吗?

例如,我需要绘制 300x300 的正方形,但四个边中的每一个都必须是具有自己名称的独立线,并且点击操作:Line1-0:0-300:0, Line2-300:0-300:300, Line3- 300:300-0:300 和 Line4-0:300-0:0。如果您将一行一行添加到 stacklayout,它们一起不会形成一个正方形。我尝试使用 absolutelayout,但结果一切都按原样绘制,但我只能按 Line4,因为它会覆盖所有其他内容。

即使可以使用 AbsoluteLayout.SetLayoutBounds 约束直线,但这并不总是适用于更复杂的形状,包括对角线。例如,对角线与宽度和高度相等的所有空间重叠。

【问题讨论】:

  • 使用 SkiaSharp 或 XF 形状

标签: xamarin.forms shapes interactive


【解决方案1】:

我使用 Xamarin.Forms Shapes 创建多边形。

使用点击手势识别器添加点击动作。

这里是 xaml 代码:

 <StackLayout Orientation="Horizontal">
    <Polygon Points="0 48, 0 144, 96 150, 100 0"
     Fill="Blue"
     Stroke="Red"
     StrokeThickness="3" >
        <Polygon.GestureRecognizers>
            <TapGestureRecognizer
            Tapped="TapGestureRecognizer_Tapped"
             />
        </Polygon.GestureRecognizers>
    </Polygon>
</StackLayout>

更多信息请查看Xamarin.Forms Shapestap gesture recognizer

【讨论】:

  • 谢谢,但我更早发现了这种方式,这样我就无法做我需要的事情。例如,我需要绘制正方形 300x300,但四个边中的每一个都必须是具有自己名称和点击操作的独立线: Line1-0:0-300:0, Line2-300:0-300:300, Line3-300:300 -0:300 和 Line4-0:300-0:0。如果您将一行一行添加到 stacklayout,它们一起不会形成一个正方形。我尝试使用absolutelayout,但结果一切都按原样绘制,但我只能按Line4,因为它会覆盖所有其他内容。
  • 即使直线可以使用 AbsoluteLayout.SetLayoutBounds 进行约束,但这并不总是适用于更复杂的形状,包括对角线。例如,对角线与宽度和高度相等的所有空间重叠。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多