Мой код дает мне значение NaN, когда я пытался проверить его возвращаемое значение. код здесь C#:Мяч внутри отверстия в кармане. WPF
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 или координаты отверстий, а затем проверить пересечение и сделать кодирование шариков, помещающих его в карман. Однако по моему коду, только он дал мне этот результат: NaN, NaN, 50,50, когда я попытался напечатать этот прямоугольник.
Еще одна вещь, если есть другой тип метода, где я могу выполнить эти цели, если мяч входит в отверстие в кармане. мяч исчезнет. Если вы считаете, что мне все еще нужно больше кода. Не стесняйтесь комментировать. Я открыт для предложений. Спасибо заранее и извините, если у меня есть грамматические ошибки.
Что такое элемент 'top'? где вы определили/объявили его? похоже, что он не содержится внутри холста. –
В отношении других типов методов вместо определения шаров с использованием фигур или других элементов управления вы можете использовать объекты «Путь», чье свойство «Геометрия» - «Эллиптическая геометрия». Геометрия позволит вам отображать на холсте на основе координат, поэтому вам больше не нужно иметь дело с 'Canvas.Top' и' Canvas.Left', даже если ваши шары «с холста» (что не должно происходить, Кстати). – heltonbiker