【问题标题】:C# WASD control?C# WASD 控制?
【发布时间】:2015-12-12 13:58:28
【问题描述】:

所以我有一个名为 picbox1 的图片框和一个图片。如果 W 被按下,我需要它向上移动,如果 A 被按下,我需要它向左移动,你明白了。最简单的方法是什么?能否请您解释一下代码。

这是我的代码(以防万一):

 using System;
using System.Windows.Forms;
using System.Drawing;
using System.Threading;

public class MyProgram {
    public static void Main() {
        Form form1 = new Form();
        form1.Show();
        form1.Width = 800;
        form1.Height = 600;
        PictureBox picbox1 = new PictureBox();
        form1.Controls.Add(picbox1);
        picbox1.Image = Image.FromFile("c:\\Users\\FakeUsername\\Downloads\\AnimatedTest.gif");

        Application.Run();

    }
    }

【问题讨论】:

    标签: c#


    【解决方案1】:

    在 Program.cs 代码中动态创建表单和图片框不是一个好主意。您应该在另一个文件中声明您的 Form1。放图片然后使用 KeyPress 事件:

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        int offset = 10;
        if(e.KeyChar == 'a')
        {
            pictureBox1.Location = new Point(pictureBox1.Location.X - offset, pictureBox1.Location.Y);
        }
        else if(e.KeyChar == 'w')
        {
            pictureBox1.Location = new Point(pictureBox1.Location.X, pictureBox1.Location.Y - offset);
        }
        else if (e.KeyChar == 's')
        {
            pictureBox1.Location = new Point(pictureBox1.Location.X, pictureBox1.Location.Y + offset);
        }
        else if (e.KeyChar == 'd')
        {
            pictureBox1.Location = new Point(pictureBox1.Location.X + offset, pictureBox1.Location.Y);
        }
    }
    

    【讨论】:

    • 你好,Marcin,我知道怎么做了!但是它移动不顺畅,按下键时它总是有一个生涩的移动,然后变得平滑,我该如何解决这个问题? P.S:为什么动态添加控件不是一个好主意?
    • 如果有充分的理由,动态添加控件是好的。在您的示例中,它只是使非常简单的程序复杂化。如果您想在按键后摆脱延迟,您需要使用 Timers 和 KeyDown 事件来实现它:stackoverflow.com/questions/29942437/…
    • 图片框没有“MoveUp()”和所有这些的定义。
    • 很抱歉,在尝试设置 winforms 应用程序之前,您应该先学习纯 C#
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多