You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知宽高时,从字节数组计算坐标的X与Y值

字节数组遍历像素坐标的解决方案

嘿,我来帮你理清Y坐标的计算逻辑!你已经找对了X坐标的计算方式——x = i % width,这个完全没问题,因为每一行有width个像素,取模运算刚好能定位到当前像素在该行的横向位置。

那Y坐标其实就藏在整数除法里:把当前索引i除以宽度width,直接取商(舍去小数部分),得到的就是当前像素所在的行号(也就是Y坐标)。比如宽度是10的话,索引15除以10得1,对应第2行(如果Y从0开始计数,这也是绝大多数图像库的默认规则,包括你用的SetPixel)。

另外你的代码里有个小坑要修正:循环条件应该是i < sender.Count(),而不是<=,不然会越界访问数组最后一个元素之后的位置。

修正后的完整代码示例:

for (int i = 0; i < sender.Count(); i++) 
{
    // 计算X、Y坐标
    int x = i % width;
    int y = i / width; // 整数除法,自动丢弃小数部分
    Color c = pal[sender[i]];
    bmp.SetPixel(x, y, c);
}

举个例子帮你理解

假设宽度是4(每行4个像素),索引和坐标的对应关系如下:

  • i=0 → x=0, y=0
  • i=1 → x=1, y=0
  • i=2 → x=2, y=0
  • i=3 → x=3, y=0
  • i=4 → x=0, y=1
  • i=5 → x=1, y=1
    ...
    每过width个索引,Y坐标就加1,正好对应一行的像素数量,整数除法完美匹配这个规律。

最后提个小细节:如果你的图像坐标系是Y轴向上(很少见,大部分像Bitmap这样的库都是Y轴向下),那你需要用height - 1 - y来反转Y坐标,但一般情况下不需要额外处理。

内容的提问来源于stack exchange,提问作者tkrn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:27:15