将屏幕坐标转换为数组网格坐标

时间:2017-05-24 17:03:26

标签: c arrays coordinates

我正在使用ANSI C并希望将屏幕上的borland图形坐标(即35,134)转换为(0,0)的网格坐标。我的网格创建功能如下:

void createGrid(int ***a, int m, int n)
{
    int i,j,color=0;

    *a=(int**)malloc(sizeof(int)*n);    //reserves memory for n

    for(i=0;i<n;i++){   //external loop
        *(*a+i)=(int*)malloc(sizeof(int)*m);    //reserves memory for m
    if(a){
         for(j=0;j<m;j++){ //internal loop
            *(*(*a+i)+j)=color;
            }
        }
    }
}

如您所见,它是一个动态网格,我无法找到正确的转换方法。我能找到的只是从数组(0,1)到单个索引的转换方法。这时,我正在使用30X30的网格大小。我的鼠标跟随屏幕坐标,我需要将这些坐标转换为网格位置,因此可以存储颜色并从这样的位置读取。

1 个答案:

答案 0 :(得分:0)

好吧,经过大量的阅读和探索,我发现这个困境的答案是采用(0后的坐标数量)空格/单元格大小。在我之前的公式中,它的(52-32)/ 10 = 2。该公式适用于x和y坐标,可将它们转换为i&amp; j个二维数组的索引。