Я пытаюсь перетащить фигуру вокруг фотошопа на событие mousemove, но я стараюсь заставить его двигаться плавно. В окне изображения есть изображение, загруженное в качестве фона, и я хотел бы, чтобы графический объект перетаскивал круг поверх изображения при щелчке мышью и перетаскивании.Перетаскивание графических объектов поверх растровых изображений
У меня есть работа, создавая клон оригинального изображения каждый раз, когда мышь перемещается и перезагружает окно с изображением, но похоже, что это должен быть лучший способ достичь этого.
Без перезагрузки оригинального растрового изображения каждый раз при добавлении любой графической информации на изображении создается след, который больше похож на приложение для рисования.
Как очистить предыдущие чертежи, не перезагружая все изображение каждый раз? Любая помощь оценивается.
private void picCanvas_MouseMove(object sender, MouseEventArgs e)
{
if (_drag)
{
picCanvas.Image = (Bitmap)_original.Clone();
Graphics g = Graphics.FromImage((Bitmap)picCanvas.Image);
g.DrawEllipse(_whitePen, e.X, e.Y, 10, 10);
picCanvas.Invalidate();
}
}
private void picCanvas_MouseDown(object sender, MouseEventArgs e)
{
_drag = true;
}
private void picCanvas_MouseUp(object sender, MouseEventArgs e)
{
_drag = false;
}
Спасибо. Мне нужно было внести небольшие изменения, поскольку событие рисования никогда не получало значения «_drag» true, поэтому никогда не рисовал бы, но вы меня достаточно близко. – fluent
Я забыл добавить строку для графического объекта. См. Отредактированный код. – honibis
Thats еще лучше. большое спасибо. Мне все еще нужно вызвать picCanvas.Invalidate после рисования, или это nevers, похоже, нажимает мой рисунок на экран. – fluent