В настоящее время я делаю игру с картинками, но у нее есть недостатки, например, при перемещении персонажей анимация работает нормально, но, поскольку она представляет собой коробку, она перемещается с лишними пробелами, даже если она прозрачна.Кроме того, когда пиктограммы сталкиваются и накладываются друг на друга, это показывает дополнительные пробелы в картинках и делает игру любительской.Итак, я пытаюсь использовать растровые изображения вместо картинок прямо сейчас.То, что я хочу, это получить ту же функциональность Picturebox.Я имею в виду, что я мог перемещать изображение с его x и y и непрерывно менять его изображение при движении (анимация / кадры).Но сейчас я не могу сделать это с растровыми изображениями.Вот мой код, который я пытался использовать:
Bitmap BM;
PaintEventArgs pnt;
Graphics g;
int framenum = 0;
private void animationTimer_Tick(object sender, EventArgs e)
{
framenum++;
if (framenum <= 8 && Acheck==true)
{
pictureBox1.ImageLocation = "chrun_l_" + framenum.ToString() + ".png";
BM = new Bitmap("chrun_l_" + framenum.ToString() + ".png");
g = Graphics.FromImage(BM);
g.DrawImage(BM, 100, 500);
}
else if (framenum <= 8 && Dcheck == true)
{
pictureBox1.ImageLocation = "chrun_r_" + framenum.ToString() + ".png";
BM = new Bitmap("chrun_l_" + framenum.ToString() + ".png");
g = Graphics.FromImage(BM);
g.DrawImage(BM, 100, 500);
}
else if (framenum < 9 && Wcheck == true)
{
pictureBox1.ImageLocation = "chrun_f_" + framenum.ToString() + ".png";
BM = new Bitmap("chrun_l_" + framenum.ToString() + ".png");
g = Graphics.FromImage(BM);
g.DrawImage(BM, 100, 500);
}
else { framenum = 0; }
}
Каждую секунду таймер будет менять номер кадра, а "chrun_l_1.png" станет "chrun_l_2.png" и продолжится.И, как вы можете видеть, прежний код все еще там (коды Picturebox).Это ничего не делает на самом деле ... Я вижу только "chrun_l_1.png" (я имею в виду только одну картинку), и это из-за Form1_Paint;
private void Form1_Paint(object sender, PaintEventArgs e)
{
BM = new Bitmap("chrun_l_1.png");
e.Graphics.DrawImage(BM, 100, 500);
pnt = e;
}
Это рисует изображение, но мне нужно, чтобы оно рисовало постоянно иСобытие Form1_Paint этого не делает.Я думаю, что это работает на этот раз, как form1_load.Я пытался использовать PaintEventArg Form1_Paint, но он не работал, поэтому я создал новый PaintEventArg с именем pnt, и это тоже не дало мне решения.
Вывод, мне нужно получить все пиксели изображения, и мне не нужен пустой фон.Итак, мне нужно создать новую форму, пикселизированную изображением, и мне нужно менять изображение в растровом изображении каждый раз, когда персонаж перемещается.Я ищу вашу помощь, ребята.Я могу дать необходимые коды после, если хотите, но это относительные коды, я думаю.Заранее спасибо.