Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как реализовать редактирование размеров фигур C# WPF

Максим Лео Знаток (366), на голосовании 6 месяцев назад
Я делаю редактор схем и диаграмм(наподобие diagrams.net ). Я сделал абстрактный класс для всех фигур и класс для прямоугольника. Я хочу реализовать редактирование размеров с помощью узлов, расположенных на краях фигуры. Но я не понимаю, как сделать эти узлы.
абстрактный класс(не поместился сюда) - https://pastebin.com/YuJRhFun
 namespace DiagramEditor.BlockDiagram 
{
internal class RectangleBlock : ShapeBlock
{
private Rectangle rect;
public RectangleBlock()
{
InitializeComponents();
}

private void InitializeComponents()
{
// Создаем прямоугольник
rect = new Rectangle
{
Stroke = BorderColor,
Fill = Brushes.Transparent,
StrokeThickness = 2,
Width = 100, // Устанавливаем ширину прямоугольника равной ширине элемента
Height = 50 // Устанавливаем высоту прямоугольника равной высоте элемента
};


}
}

}
Голосование за лучший ответ
Саша Кармышев Профи (526) 7 месяцев назад
слушай сюда ясно что код ты уже написал теперь дело за малым создавай внутри своего класса rectangleblock несколько эллипсов это твои узлы их ты расставляешь по углам прямоугольника привязываешь их к координатам углов используй canvas.setleft и canvas.settop для позиционирования

для обработки перемещения узлов повесь обработчики на события mouseleftbuttondown и mousemove когда тянешь узел меняй размеры и положение своего прямоугольника rect это должно быть связано с положением узла например если тянешь левый верхний узел то перемещай верхний левый угол прямоугольника и меняй его размеры

запомни одно тут важно все делать аккуратно и правильно проверяй каждое изменение в реальном времени и не забывай про проверку границ чтобы фигура не перевернулась или не исчезла в никуда используй математику и логику а не эти ваши щелчки мышью бездумные
Похожие вопросы