У меня есть форма окна, которая позволит пользователю рисовать фигуры (например, круг, квадрат или треугольник). пользователь сможет выделить любую из фигур и будет иметь возможность переместить выделенную фигуру
в коде мне удается это сделать, но проблема в том, что в методе перерисовки я не могу очистить старую фигуру, которую пользователь должен переместить, если я не удаляю все вместе
пытался использовать недействительным, но не знаю, его механизм и как он работает
любой совет, чтобы иметь возможность сохранить формы, которые не выделены, и только удалить выделенный, а затем перерисовать его
как показано в коде, который отвечает только за перемещение элемента, спасибо
private void moveItem(int x)
{
SolidBrush redBrush = new SolidBrush(Color.Red);
GraphicsPath myPath = new GraphicsPath();
if (isMove)
{
// isMove = false;
//bool isHighlighted = false;
for (int i = 0; i < shapes.Count; i++)
{
Graphics g = this.CreateGraphics();
Pen blackpen = new Pen(Color.Black);
if (shapes[i].Selected)
{
if (shapes[i].ShapeType == (int)ShapeTypes.Square)
{
//this.Invalidate();
shapes[i].keyPt = new Point(shapes[i].keyPt.X + x, shapes[i].keyPt.Y);
shapes[i].oppPt = new Point(shapes[i].oppPt.X + x, shapes[i].oppPt.Y);
//shapes[i].ShapeType = (int)ShapeTypes.Square;
//shapes[i].Selected = true;
g.Clear(Color.White);
((Square)shapes[i]).draw(g, blackpen);
((Square)shapes[i]).fillSquare(g, redBrush);
//add the square to the shapes list
//shapes.Add(aSquare);
}
else if (shapes[i].ShapeType == (int)ShapeTypes.Circle)
{
shapes[i].keyPt = new Point(shapes[i].keyPt.X + x, shapes[i].keyPt.Y);
shapes[i].oppPt = new Point(shapes[i].oppPt.X + x, shapes[i].oppPt.Y);
g.Clear(Color.White);
((Circle)shapes[i]).draw(g, blackpen);
((Circle)shapes[i]).fillCircle(g, redBrush);
}
else if (shapes[i].ShapeType == (int)ShapeTypes.Triangle)
{
shapes[i].keyPt = new Point(shapes[i].keyPt.X + x, shapes[i].keyPt.Y);
shapes[i].oppPt = new Point(shapes[i].oppPt.X + x, shapes[i].oppPt.Y);
g.Clear(Color.White);
((Triangle)shapes[i]).draw(g, blackpen);
((Triangle)shapes[i]).fillTriangle(g, redBrush);
}
}
}
}
}