Как мне перекрасить панель в гладкую?
Я использую таймер, который аннулирует панель (panel1.Invalidate();
) каждые 300 мс, а затем с событием panel1_Paint
я добавляю изображения на эту панель, проблема в том, что похоже, что она прыгает, и мне нужно перемещать по ней одно изображение так быстро как могу.
Это ссылка на проблему с отображением экрана: http://screencast.com/t/HdtIV99YN
private void panel1_Paint(object sender, PaintEventArgs e)
{
PaintMapObstacles(e);
PaintMapStartAndGoal(e);
if (trayectoryIndex < 1000)
{
MapPoint point = GetTrayectoryPoint(0, trayectoryIndex);
e.Graphics.DrawImage(new Bitmap("robot.jpg"), point.X*squareSize, point.Y*squareSize, 60, 60);
trayectoryIndex++;
}
}
private void PaintMapStartAndGoal(PaintEventArgs e)
{
MapPoint start = new MapPoint { X = 0, Y = 0 };
MapPoint goal = new MapPoint { X = 7, Y = 8 };
// e.Graphics.DrawImage(new Bitmap("start.jpg"), start.X * squareSize, start.Y * squareSize, 60, 60);
e.Graphics.DrawImage(new Bitmap("goal.jpg"), goal.X * squareSize, goal.Y * squareSize, 60, 60);
isFirstRun = true;
}
private void PaintMapObstacles(PaintEventArgs e)
{
foreach (MapPoint mpoint in obstacles.Obstacles)
{
e.Graphics.DrawImage(new Bitmap("obstacle.png"), mpoint.X * squareSize, mpoint.Y * squareSize, 60, 60);
}
}
private void PanelTimer_Tick(object sender, EventArgs e)
{
panel1.Invalidate();
}
don't want to spend to much time doing the visualization
, вам действительно следует использовать соответствующие технологии. Принуждение устаревшей технологии к чему-то, для чего она действительно не подходит, приведет к потере ужасного количества времени. Не говоря уже о том, что подход winforms, использующий слишком много кода для всего, сам по себе уже гораздо более громоздкий, чем использование правильного DataBinding и тому подобного. - person Federico Berasategui   schedule 06.03.2014