Android 如何根据行程上限计算线路起点?

Android 如何根据行程上限计算线路起点?,android,drawing,ondraw,stroke,Android,Drawing,Ondraw,Stroke,我试图画一条线,但我需要考虑笔划帽的宽度,这样我就不会使容器溢出 我有这样的代码 private void initialize() { this.paint = new Paint(); this.paint.setColor(Color.BLACK); this.paint.setStyle(Paint.Style.STROKE); this.paint.setStrokeCap(Paint.Cap.ROUND); this.paint.setStro

我试图画一条线,但我需要考虑笔划帽的宽度,这样我就不会使容器溢出

我有这样的代码

private void initialize() {
    this.paint = new Paint();
    this.paint.setColor(Color.BLACK);
    this.paint.setStyle(Paint.Style.STROKE);
    this.paint.setStrokeCap(Paint.Cap.ROUND);
    this.paint.setStrokeWidth(1);
}

public void setStrokeWidth(float strokeWidth) {
    this.paint.setStrokeWidth(strokeWidth);
}

public void onDraw(Canvas canvas) {
    int x_start, x_end, y, cap_width;
    y = this.getHeight() / 2;
    x_start = cap_width; //Need to compensate for cap.
    x_end = this.getWidth() - cap_width; //Need to compensate for cap.

    canvas.drawLine(x_start, y, x_end, y, paint);
}

注意,在上面代码的onDraw方法中,我需要计算封口宽度。我如何计算呢?

在写问题时,我意识到答案对某些人来说可能相当明显。对于那些思维不清晰的人(我不是),这里有一个解决方案

笔划的半径始终为笔划宽度的一半

cap_width = (int)paint.getStrokeWidth / 2;