Diskuze: Pohyb objektů po PictureBoxu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zkus zapnout double buffering ale asi to nepomůže
To jsem zkoušel, nepomáhá
no, zkoušel jsem to u sebe a dělá mi to taky. Asi půl rokem jsem to řešil taky ale už nevím jak jsem to vyřešil. Snad poradí někdo zkušenější
WinForm a PictureBox se na hry nehodí, minimum co se dá použít je WPF tady je ukázka
Cílem toho přepisování projektu je, abych se učil práci s objekty. Nedá se to nějak obejít ve WinForm a PictureBoxu?
me se to zda docela plynule
public partial class Form1 : Form
{
private float angle;
public Form1()
{
InitializeComponent();
DoubleBuffered = true;
}
private void Form1_Load(object sender, EventArgs e)
{
Task.Run(() =>
{
while (true)
{
Thread.Sleep(5);
this.Invalidate();
}
});
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
angle += 0.5f;
var x = 100*Math.Sin(2 * Math.PI * angle/360) + 200;
var y = 100*Math.Cos(2 * Math.PI * angle / 360) + 200;
e.Graphics.DrawEllipse(new Pen(Brushes.Red,2), new RectangleF((int) Math.Round( x), (int) Math.Round(y), 50, 50));
x = 100 * Math.Sin(2 * Math.PI * 2*angle / 360) + 200;
y = 100 * Math.Cos(2 * Math.PI * 2*angle / 360) + 200;
e.Graphics.DrawEllipse(new Pen(Brushes.Green, 2), new RectangleF((int)Math.Round(x), (int)Math.Round(y), 50, 50));
x = 100 * Math.Sin(2 * Math.PI * 4 * angle / 360) + 200;
y = 100 * Math.Cos(2 * Math.PI * 4 * angle / 360) + 200;
e.Graphics.DrawEllipse(new Pen(Brushes.Blue, 2), new RectangleF((int)Math.Round(x), (int)Math.Round(y), 50, 50));
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}
}
Zobrazeno 8 zpráv z 8.