У меня есть 2 объекта изображения. Я хочу, чтобы оба они двигались справа налево. Если вы выходите из видимой панели, я заменяю ее положение на начальную точку. Так что на экране всегда есть 2 картинки.Изображение обновляется при обновлении новой позиции
Если я не использую таймер, нарисованы 2 картины. Но если я использую таймер с тиковым событием, обновляющим свои позиции, чтобы заставить их двигаться, отображается только 1 изображение, и оно продолжает мигать, отставание ...
Ниже приведен мой код. Я не знаком с C#. Цените любую помощь. Спасибо.
Сроки таймера = 30; Форма 1:
public partial class Form1 : Form
{
Background bg1 = new Background();
Background bg2 = new Background(800);
public Form1()
{
InitializeComponent();
}
private void flowLayoutPanel1_Paint(object sender, PaintEventArgs e)
{
bg1.paint(e);
bg2.paint(e);
}
private void Timer_Tick(object sender, EventArgs e)
{
bg1.updatePosition();
bg2.updatePosition();
this.Refresh();
}
}
фона:
class Background
{
int bg_width = 800;
int bg_height = 500;
Image bg;
Rectangle wb;
private static int x = 0;
public Background()
{
bg = Properties.Resources.bg;
wb = new Rectangle(x, 0, bg_width, bg_height);
}
public Background(int custom_x)
{
x = custom_x;
bg = Properties.Resources.bg;
wb = new Rectangle(x, 0, bg_width, bg_height);
}
public void paint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawImage(bg, wb);
}
public void updatePosition()
{
x--;
if (x == -800)
{
x = 801;
}
wb.Location = new Point(x, 0);
}
}
Ваш интервал таймера составляет 0,03 секунды, это то, что вы действительно хотите? –
Двойная буферизация FTW! –
Что вы нацеливаете: Winforms, WPF, ASP ..? __Always__ правильно помечайте свой вопрос! - Объясните, каковы ваши _pictures_ на самом деле! – TaW