获取鼠标移动坐标并将它们除以32时出错(Math.Floor)

时间:2017-06-14 19:23:20

标签: c# .net

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    //Create Graphics
    Graphics g = this.CreateGraphics();

    mx = Math.Floor(e.X / 32);
    my = Math.Floor(e.Y / 32);
}

Floormxmy下获取错误(mx和我都是整数)

  

错误:严重性代码描述项目文件行抑制状态       错误CS0121以下方法或属性之间的调用不明确:'Math.Floor(decimal)'和   'Math.Floor(double)'GameAttempt3 c:\ users \ levyjrdesktop \ documents \ visual   studio 2015 \ Projects \ GameAttempt3 \ GameAttempt3 \ Form1.cs 95 Active

2 个答案:

答案 0 :(得分:6)

Floor方法有两个重载(DoubleDecimal):

public static decimal Floor(decimal d);
public static double Floor(double d);

所以你需要施放:

mx = Math.Floor((double)e.X / 32);
my = Math.Floor((double)e.Y / 32);

答案 1 :(得分:2)

实际上无需拨打Math.Floor(..)e.Xe.Y已经是整数,并且两个整数之间的划分将生成整数部分

所以你可以写一下:

mx = e.X / 32;
my = e.Y / 32;

或者如果你想使用Math.Floor(因为整数除法与Floor除法有点不同,你可以除以32.0d 来制作它一双:

mx = (int) Math.Floor(e.X / 32.0d);
my = (int) Math.Floor(e.Y / 32.0d);

然后你必须再次投射到int