在Windows Phone几何体中指定几何体的位置

本文关键字:几何体 位置 Windows Phone | 更新日期: 2023-09-27 18:17:03

我有System.Windows.Media.Geometry元素,每个元素都由以下属性初始化:

路径,高度和宽度。

然后将几何图形插入到System.Windows.Media.GeometryGroup中。但是这个群的界是零,不管插入的几何是什么。为什么会这样?

由于我正在创建一个GeometryGroup,如果可能的话,我想根据x y和z来定位组中的元素,这样我就可以创建我的几何元素,如本例所示。

基本上我的问题是:用户将元素添加在一起,我想基于这些图创建一个新元素,这样可以为用户定义的元素创建一个新的路径。假设有一个正方形和一个三角形。用户将其组合成一个房子。现在我想让房子成为用户的一个元素。对于这个,我需要元素的路径,我怎么创建它呢?

在Windows Phone几何体中指定几何体的位置

通过使用转换,更具体地说是复合转换,您可以将其添加到许多不同的几何形状中。这样,这个位置和其他一切都可以按照你的意愿设置。但你可能更想看看路径几何

这是我从你链接的例子中提取的一个xaml定义,所以我们有一些具体的东西要讨论。

<Path Stroke="Black" StrokeThickness="3" Fill="Blue" >
    <Path.Data>
        <GeometryGroup >
            <LineGeometry StartPoint="20,200" EndPoint="300,200" />
            <EllipseGeometry Center="80,150" RadiusX="50" RadiusY="50" />
            <RectangleGeometry Rect="80,167 150 30"/>
        </GeometryGroup>
    </Path.Data>
</Path>

这条路径的起点在哪里?它没有定义一个。如果你从这个组中删除LineGeometry,它现在在一个单独的组中,它还是从20,200开始吗?是的。

让我们编一些任意的规则。

任何组中的第一个几何体总是一个零长度的LineGeometry,也就是说,它的StartPoint和EndPoint是相同的。这个几何图形定义了原点。这个LineGeometry永远不会从组中移除;只有在它下面的形状被添加和删除。

当你从一个组中移除一个几何图形时,你用原点减去任何位置数据。
当你将一个几何图形添加到一个组中时,你通过原点添加到任何位置数据。

示例,您想将EllipseGeometry从Path1移动到Path2…

// Path1
<Path Stroke="Black" StrokeThickness="3" Fill="Blue" >
    <Path.Data>
        <GeometryGroup >
            <LineGeometry StartPoint="100,0" EndPoint="100,0" />
            <EllipseGeometry Center="100,0" RadiusX="50" RadiusY="50" />
        </GeometryGroup>
    </Path.Data>
</Path>
// Path2
<Path Stroke="Black" StrokeThickness="3" Fill="Blue" >
    <Path.Data>
        <GeometryGroup >
            <LineGeometry StartPoint="100,100" EndPoint="100,100" />
        </GeometryGroup>
    </Path.Data>
</Path>

从Path1中删除EllipseGeometry…
EllipseGeometry。中心= 100,0 - 100,0 = 0,0

添加EllipseGeometry到Path2…
EllipseGeometry。中心= 0,0 + 100,100 = 100,100

Tadda,之前呈现在一个路径原点的椭圆现在呈现在另一个路径的原点