Я пытаюсь создать пользовательский Shape
, я начал с создания Rectangle
.RectangleGeometry - Прямоугольник разрезается
Вот мой код:
public class CustomRectangle : Shape
{
protected override Geometry DefiningGeometry
{
get
{
return new RectangleGeometry(new Rect(new Point(10, 10), new Size(100, 50)));
}
}
}
Когда я использую 100
и 50
для Width
и Height
из Rectangle
соответственно Rectangle
втягивается отлично.
Однако, если я увеличиваю либо Width
и/или Height
для скажем 200
и 100
, нарисованной форма не Rectangle
, но форма, содержащая только две линии (выглядит как он это сделать Rectangle
только она разрезается - как будто у меня есть некоторые границы, в которых можно нарисовать фигуру).
Я рисовать Shape
на Canvas
, а вот код, который:
private void MouseClick(object sender, MouseButtonEventArgs mouseButtonEventArgs)
{
if (mouseButtonEventArgs.LeftButton != MouseButtonState.Pressed)
{
m_downClick = new Point(-1, -1);
return;
}
m_downClick = mouseButtonEventArgs.GetPosition(sender as Canvas);
var newRect = new CustomRectangle {Width = 200, Height = 100, Stroke = Brushes.Black, Location = m_downClick};
Canvas.SetTop(newRect , m_downClick.Y);
Canvas.SetLeft(newRect , m_downClick.X);
(sender as Canvas).Children.Add(newRect);
}
Что может быть причиной этого?
Обратите внимание, что класс Shape уже имеет свойства Width и Height. Просто используйте их, т. Е. Верните новую RectangleGeometry (новый Rect (0, 0, Width, Height)); ' – Clemens
@Clemens. Действительно, я обновил свой ответ. Я более или менее предполагал, что Shape будет нуждаться в пользовательских свойствах позже в любом случае –