WPF - UIElement.Размер рендеринга не работает для формы линии

StackOverflow https://stackoverflow.com/questions/1027145

Вопрос

Я пытаюсь создать какое-нибудь приложение для рисования, и я получаю странные результаты в моем "режиме выбора".Если я рисую прямоугольник и "выбираю его", RenderSize возвращает для него правильный размер, но если выбрана линия, RenderSize возвращает размер, ширина которого задана как Line.X2, а высота - как Line.Y2.Например:Строка начинается с X1 = 50, Y1 = 50, заканчивается на X2 = 130, Y2 = 90, RenderSize возвращает размер с шириной = 130 и высотой = 90.Мой выбор содержит элементы типа UIElement, поэтому я не знаю (и действительно не должен заботиться), какая фигура выбрана, чтобы сделать мой режим выбора максимально универсальным, и я хотел бы нарисовать ограничивающую рамку, пока пользователь перемещает выбранную фигуру.

Попробовал поискать проблему в Google, но не нашел ничего подходящего, так что, возможно, вы могли бы помочь мне с этим.Это потому, что прямоугольник имеет положение, заданное Canvas, в то время как линия имеет свои точки, заданные явно?

Это было полезно?

Решение

Причина, по которой вы получаете 130x90, кроется в причине, которую вы указали.Прямоугольник в WPF не имеет положения, это просто высота / ширина, поэтому два значения размера равны.

Однако Линия, определяемая точками, обязательно определяет требуемое смещение от начала координат, и, таким образом, смещение включается в ограничивающую рамку.

Также обратите внимание, что вы можете продолжать использовать свойства Canvas.Top/ Left с вашим линейным объектом для дальнейшего его смещения, например:

  <Canvas>
    <Line X1="50" X2="130" Y1="50" Y2="90" StrokeThickness="1" Stroke="Blue" Canvas.Top="50" Canvas.Left="30"></Line>
  </Canvas>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top