Я использую pictureBox для перемещения 2 линейных ступеней; когда событие mouseDown запускается, координаты pictureBox переназначаются в соответствии с максимальной длиной перемещения оси и затем отправляются им для выполнения движения.обновление положения круга на картинкеBox
Чтобы улучшить эту функцию, я добавил маленькую точку на этом изображении, чтобы отслеживать текущую позицию мыши во время события mouseDown. точка должна обновлять свое положение каждый раз, когда движется мышь; для этого я использовал gfx.Clear (Color.White); чтобы удалить предыдущую и нарисовать новую. Проблема в том, что для правильного позиционирования оси pictureBox должен показывать фотографию оси; но вызов gfx.Clear (Цвет) очищает изображение и оставляет меня на белом фоне.
есть способ обновления позиции точек без вызова gfx.Clear (для того, чтобы сохранить изображение?)
if (e.Button.Equals(MouseButtons.Left))
{
{
this.gridImage.Refresh();
convertedX = (e.X * 100)/gridImage.Size.Width;
convertedY = (e.Y * 100)/gridImage.Size.Height;
using (Graphics gfx = Graphics.FromImage(this.gridImage.Image))
{
circle_bounds.X = e.X;
circle_bounds.Y = e.Y;
gfx.Clear(Color.White);
gfx.DrawEllipse(Pens.Red, this.circle_bounds);
}
Console.WriteLine("(X,Y): " + convertedX.ToString() + " " + convertedY.ToString());
Thread.Sleep(20);
//moveAbs(port1, "1", convertedX.ToString());
//moveAbs(port2, "1", convertedY.ToString());
initialXText.Text = convertedX.ToString();
initialYText.Text = convertedY.ToString();
}
}
Вы должны нарисовать круг на поверхности Pbox. Используйте 'using (Graphics gfx = gridImage.CreateGraphics)' для этого; бросьте Refresh() !. Результат не сохранится, но это не то, что вы хотите, не так ли? Для постоянного рисования используйте событие Paint и его объект e.Graphics и gridImage.Invalidate, чтобы вызвать Paint. - Вы уверены, что сон в MouseMove ??? Звучит ужасно странно! См. [Здесь] (http://stackoverflow.com/questions/38414334/how-to-draw-an-updating-line/38419518?s=24|0.0642#38419518) для примера строки обновления! – TaW
работал как шарм! благодаря! –
Обратите внимание: 'Графика gfx = gridImage.CreateGraphics()' обычно является серьезной ошибкой, так как данные не являются __not persistent__, то есть исчезают, например. после минимизации формы. Использование здесь здесь редкое __exception__ к правилам! – TaW