Я нарисовал несколько кружков на Form1
, используя GDI+
, и центр круга - маленький красный прямоугольник Custom Control
, который получен из User Control
, свойства BackgroundImage
Form1
' Растровое изображение, которое также рисуется GDI+
несколькими цветами.
То, что я хочу, это то, что, когда я перемещаю красный прямоугольник (центр круга) с помощью мыши, круг также перемещается вслед за красным прямоугольником. Используя событие MouseDown
, MouseMove
, я мог плавно перемещать красный прямоугольник с помощью мыши.
Моя проблема в том, как переместить круг, соответствующий красному прямоугольнику (центр круга).
Я включил двойную буферизацию, чтобы решить проблему мерцания. CircleCenter
является объектом класса Custom Control
(например, красный прямоугольник). GObject
является объектом Grahpics.
Вот некоторые коды клавиш:
public Form1()
{
InitializeComponent();
this.SetStyle(ControlStyles.DoubleBuffer | //enables double-buffering
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
}
Point CCenterPoint = new Point();
private int Diameter = 250;
private void CircleCenterMouseDown(object sender, MouseEventArgs e)
{
CCenterPoint = new Point(-e.X, -e.Y);
}
private void CircleCenterMouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point MousePos = CircleCenter.MousePosition;
MousePos.Offset(CCenterPoint.X, CCenterPoint.Y);
CircleCenter.Location = CircleCenter.Parent.PointToClient(MousePos);
CircleCenter.BringToFront();
CirclePen.Color = Color.Black;
GObject.DrawEllipse(CirclePen, CircleCenter.Left- Diameter/2, CircleCenter.Top - Diameter/2, Diameter, Diameter);
this.Invalidate();
}
}
Как убрать черный кружок, нарисованный GDI+
, полученный в процессе MouseMove
?
Я погуглил несколько сайтов и не получил удовлетворенного ответа. Надеюсь, вы могли бы дать мне несколько советов, Thx!