Так что я возился, получая повсюду вещи, и я делаю движение коробки с картинками, которое я сделал. Однако может ли кто-нибудь показать мне, как сделать движение более свободным, но не замедлить его?More Fluent Image Movement
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace meh
{
public partial class Form1 : Form
{
PictureBox Test = new PictureBox();
public Form1()
{
InitializeComponent();
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
Test.Image = Properties.Resources.PlatinumGrass;
Test.Location = new Point(0, 0);
Test.Width = 32;
Test.Height = 32;
this.Controls.Add(Test);
KeyDown += new KeyEventHandler(Form1_KeyDown);
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
int x = Test.Location.X;
int y = Test.Location.Y;
int xmax = Screen.PrimaryScreen.Bounds.Width - 32;
int ymax = Screen.PrimaryScreen.Bounds.Height - 32;
if (e.KeyCode == Keys.Right && x < xmax) x += 20;
if (e.KeyCode == Keys.Left && x > 0) x -= 20;
if (e.KeyCode == Keys.Up && y > 0) y -= 20;
if (e.KeyCode == Keys.Down && y < ymax) y += 20;
Test.Location = new Point(x, y);
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Он может двигаться только так быстро, как ваша клавиатура повторяет ключ, когда вы держите его. Что является системной настройкой и нерегулярной, пауза после 1-го числа длиннее паузы на последующих. Вместо этого вы хотите использовать KeyDown/Up для установки переменной, указывающей, каким образом изображение должно перемещаться. И используйте таймер 31 мс, чтобы заставить его двигаться. Такой таймер представляет собой полуприличную эмуляцию «игрового цикла». Google «окна формирует игровой цикл» для хитов. –
Извините, что я совершенно новый, как я могу использовать KeyDown/Up с кодом, который у меня есть сейчас? @HansPassant – UltimateAlloy