在android上的2个距离点之间画线

时间:2012-02-17 13:05:01

标签: java android drawing android-canvas

假设我们有一个400x800的画布,我想绘制一条连接点的线 P1(10,10)和P2(500000,800000)。 正如您所看到的,第二点远远超出画布边界。如果我使用canvas.darwLine(p1.x,p1.y,p2.x,p2.y,paint),应用程序会冻结,应用程序将无法使用。 使用裁剪并没有解决问题,绘图引擎仍然试图将像素绘制到第二点的整个方式

有任何建议或解决方法吗?

2 个答案:

答案 0 :(得分:2)

如果P2在可见区域之外(在这种情况下为480x800)则计算该线与边界的交点,然后使用交点而不是P2。

答案 1 :(得分:0)

您可以使用以下内容缩小您的行:

int maxX = 400;
int maxY = 800;

//Calculate how much we have to scale down to fit in the bounds:
float scaleX = (maxX - p1.x)/p2.x;
float scaleY = (maxY - p1.y)/p2.y;

//Get the smallest scale, so that we fit in both axises.
float scale = Math.min(scaleX, scaleY);

//Only scale if we are scaling down. There is no need to make lines smaller than the screen scale up to the screen bounds:
if(scale < 1.0f){
    p2.x *= scale;
    p2.y *= scale;
}

我没试过这个,所以我不能保证它会起作用。