Позиционирование элемента на холсте
У меня есть холст и красный прямоугольник на нем. Rectangle
имеет MouseDown
реализован обработчик событий:
private void RedRectangle_MouseDown(object sender, MouseButtonEventArgs e)
{
CreateMyBorder();
}
CreateMyBorder
метод должен создать Border
UIElement с тем же размером и положением, что и прямоугольник на холсте, т.е. он должен покрывать красный прямоугольник.
Копирование Width
а также Height
свойства красного прямоугольника и установка их для Border
Элемент прост:
myBorder.Height = RedRectangle.Height;
myBorder.Width = RedRectangle.Width;
Однако копирование положения красного прямоугольника на холсте кажется мне невозможным после 2 часов проб и ошибок! Ожидаемое:
double x = RedRectangle.GetValue(Canvas.Left);
double y = RedRectangle.GetValue(Canvas.Top);
myBorder.SetValue(Canvas.Left, x);
myBorder.SetValue(Canvas.Top, y);
не работает как x
а также y
значения переменных NaN
, Зачем?
Пожалуйста, помогите, я не могу поверить, что что-то такое тривиальное, как получение и настройка UIElement
Положение на панели может быть таким раздражающим. Благодарю.
1 ответ
Вы можете использовать статические функции на Canvas
:
Canvas.SetLeft(element, x);
Canvas.SetTop(element, y);
Осторожно, Canvas
никогда не отображать элементы с Left
или же Top
равно double.NaN
, который является значением по умолчанию для Left
а также Top
,