c# - 如何获取网格上某个位置的坐标?

标签 c# c#-4.0 c#-3.0 coordinates

如何通过一个框的编号获取网格上某个位置的坐标?

    1  2  3  4  5  6  
------------------------------
1|  1  2  3  4  5  6  
2|  7  8  9 10 11 12 
3| 13 14 15 16 17 18
4| 19 20 21 22 23 24
5| 25 26 27 28 29 30
6| 31 32 33 34 35 36

即:如果我有数字 15,则坐标为 x=3;y=3

我尝试开发一个功能,但它不起作用,有人有想法吗?

谢谢你的帮助

最佳答案

更新(公式错误):

y = (myNumber - 1) / 6 + 1;
x = (myNumber - 1) % 6 + 1;

更新(解释):

每行包含 6 个元素。我们定义 x 除以 6 的余数:

x ~ 我的号码 % 6

加上+1,因为定义范围是[1;6]。

x ~ 我的数字 % 6 + 1

但是行中的最后一个元素可以被 6 整除而没有余数。考虑到这一点,我们在应用模运算符之前从 myNumber 中减去 1:

x = (myNumber - 1) % 6 + 1

例如我的号码 = 1 => x = 1;我的号码 = 6 => x = 6;我的号码 = 7 => x = 1;我的号码 = 12 => x = 6;

行数称为 y,与除以 6 的整数成正比:

y ~ 我的号码/6

但我们必须再次考虑,我们不是从 0 开始,而是从 1 开始:

y ~ 我的数字/6 + 1

还有“左移”,因为每行的最后一个元素可以除以 6 而没有余数。所以我们在除以反射(reflect)这一点之前从 myNumber 中减去 1:

y = (myNumber - 1)/6 + 1

关于c# - 如何获取网格上某个位置的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13763239/

相关文章:

c# - 如何获取计数并弹出消息框

c# - 2个C#类相互包含为成员

c#-3.0 - 创建一个将 lambda 表达式传递给构造函数的对象

c# - 单元测试文件编写器功能

c# 抽象类 -- "one or the other"替代函数

javascript - 使用负值 Google Chart 在条形图上移动注释

ASP.NET C# Active Directory - 查看用户密码过期还有多长时间

c# - 服务器对象的 UI 表示

linq - 扩展方法转换为 LINQ 表达式和常用方法

c# - 想要从数据表日期列中删除时间