如何获得折线的每个像素的坐标

本文关键字:像素 坐标 折线 何获得 | 更新日期: 2023-09-27 18:01:46

我有256x256个Canvas和一个Polyline在上面,第一个PointX坐标= 0,最后一个PointX = 255。在运行期间,用户可能会输入更多的点。

如何获得折线的每个像素的坐标

如何在渲染的Polyline的0 - 255范围内获得每个XY坐标?

假设折线的点为(x[i], y[i]),对于i = 0到n,其中x值按递增顺序排列。我们知道x[0] = 0 x[n] = 255。然后假设我们得到一个范围在0到255之间的x值。我们首先找到一个索引i,使得x[i] <= X [i+1]。对应的y值由

给出
y = y[i] + (y[i+1] - y[i])*(x - x[i])/(x[i+1] - x[i])

,或者说等价于

y = ( (x[i+1] - x)*y[i] + (x - x[i])*y[i+1] ) / (x[i+1] - x[i])

当然,如果x[i] = x[i+1]会有问题,所以这种特殊情况需要额外的注意。

另外,请注意这些公式将给出y的非整数值,这显然不直接对应于任何像素位置。具体渲染哪些像素取决于线的宽度和扫描转换算法的内部细节,我们无法知道。但是,如果您将y值四舍五入为整数,则很有可能会呈现相应的像素。