球在口袋里.WPF
本文关键字:WPF 口袋 | 更新日期: 2023-09-27 18:29:27
当我尝试测试它的返回值时,我的代码给了我一个NaN值。代码在这里C#:
var hx1 = Canvas.GetLeft(top);
var hy1 = Canvas.GetTop(top);
Rect h1 = new Rect(hx1, hy1, top.ActualWidth, top.ActualHeight);
Console.WriteLine(h1);
XAML
<Canvas Canvas.Left="134" Canvas.Top="98" Height="500" Width="1010">
<Ellipse Height="50" Name="top" Stroke="Black" Width="50" Margin="481,4,479,446" />
<Ellipse Height="50" Margin="30,21,930,429" Name="topLeft" Stroke="Black" Width="50" />
<Ellipse Height="50" Margin="30,430,930,20" Name="botLeft" Stroke="Black" Width="50" />
<Ellipse Height="50" Margin="481,444,479,6" Name="bot" Stroke="Black" Width="50" />
<Ellipse Height="50" Margin="930,430,30,20" Name="botRight" Stroke="Black" Width="50" />
<Ellipse Height="50" Margin="930,21,30,429" Name="topRight" Stroke="Black" Width="50" />
<Grid Canvas.Left="0" Canvas.Top="0" Height="500" Width="1010">
<!--<Canvas Height="500" Width="1010" Name="PoolCanvas">-->
<ContentControl x:Name="poolContainer">
</ContentControl>
<!--</Canvas>-->
</Grid>
</Canvas>
首先,我正在尝试使用WPF制作一个台球游戏。现在我正试着做一个"口袋洞",让球进入水池。有人告诉我,要先检索孔x和y或孔的坐标,然后检查相交处,并对放入口袋的球进行编码。然而,在我的代码中,它只提供了以下输出:不,不,50,50当我试着打印那个矩形的时候。
还有一件事,如果有另一种方法,我可以实现这些目标,如果球进入口袋洞。球将消失。如果你认为我还需要提供更多的代码。欢迎发表评论。我愿意接受建议。提前谢谢你,如果我有语法错误,我很抱歉。
您可以将Path
与EllipseGeometry
:一起使用,而不是使用Ellipse
来定义每个孔
<Canvas>
<Path Stroke="Black">
<Path.Data>
<EllipseGeometry x:Name="topLeft" Center="50,50" RadiusX="25" RadiusY="25"/>
</Path.Data>
</Path>
<Path Stroke="Black">
<Path.Data>
<EllipseGeometry x:Name="top" Center="500,50" RadiusX="25" RadiusY="25"/>
</Path.Data>
</Path>
<!-- More Paths, one for each hole -->
</Canvas>
请注意,现在命名的是几何图形,而不是路径本身。所以你的C#代码应该是:
var hx1 = top.Center.X;
var hy1 = top.Center.Y;
var h1 = top.Center; // of type System.Windows.Point;
Rect h1rect = top.Bounds;