在Windows Phone几何体中指定几何体的位置
本文关键字:几何体 位置 Windows Phone | 更新日期: 2023-09-27 18:17:03
我有System.Windows.Media.Geometry元素,每个元素都由以下属性初始化:
路径,高度和宽度。
然后将几何图形插入到System.Windows.Media.GeometryGroup中。但是这个群的界是零,不管插入的几何是什么。为什么会这样?由于我正在创建一个GeometryGroup,如果可能的话,我想根据x y和z来定位组中的元素,这样我就可以创建我的几何元素,如本例所示。
基本上我的问题是:用户将元素添加在一起,我想基于这些图创建一个新元素,这样可以为用户定义的元素创建一个新的路径。假设有一个正方形和一个三角形。用户将其组合成一个房子。现在我想让房子成为用户的一个元素。对于这个,我需要元素的路径,我怎么创建它呢?
通过使用转换,更具体地说是复合转换,您可以将其添加到许多不同的几何形状中。这样,这个位置和其他一切都可以按照你的意愿设置。但你可能更想看看路径几何
这是我从你链接的例子中提取的一个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,之前呈现在一个路径原点的椭圆现在呈现在另一个路径的原点