android - Android canvas line strokeCap比简单的线条大

我正在尝试在imageView位图上绘制特定宽度的圆角线。

因此,我使用paintLine.strokeCap = Paint.Cap.ROUND绘制了一条简单的线,没有使用此选项。

结果如下:

两种线之间的区别

第一个是四舍五入的,您可以看到它大于底部的那个。

这是我使用的代码。

    val paintLine = Paint()
    paintLine.color = Color.WHITE
    paintLine.style = Paint.Style.FILL_AND_STROKE
    paintLine.strokeWidth = 40.0f
    paintLine.strokeCap = Paint.Cap.ROUND

    val workingBitmap = Bitmap.createBitmap(bitmap)
    val mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true)

    val drawingBitmapCanvas = Canvas(mutableBitmap)

    drawingBitmapCanvas.apply {
        drawLine(300, 300, 400, 300, paintLine)
    }

我想知道是否可以用圆角线保持相同的宽度吗?

谢谢。

您只需要一点数学即可。 添加到该行的圆形笔划帽的宽度/长度等于油漆笔划的一半。

这是我的代码:

Paint linePaint =  new Paint();
Paint noCaplinePaint =  new Paint();

public void init(){
    linePaint.setColor(this.getResources().getColor(android.R.color.black));
    linePaint.setStyle(Paint.Style.FILL_AND_STROKE);
    linePaint.setStrokeWidth(40f);
    linePaint.setStrokeCap(Paint.Cap.ROUND);

    noCaplinePaint.setColor(this.getResources().getColor(android.R.color.black));
    noCaplinePaint.setStyle(Paint.Style.FILL_AND_STROKE);
    noCaplinePaint.setStrokeWidth(40f);
}

然后在onDraw

canvas.drawLine(50f, 40f, 300f, 40f, noCaplinePaint);
canvas.drawLine(70f, 81f, 280f, 81f, linePaint);

产生这些行:

生产线

因此,回顾一下,可以如下计算圆形线帽的大小:

additionalLengthFromRoundCap = lineStrokeWidth/2

并且此上限将添加到线条的两端,因此线条的strokeWidth将比绘制的长。

转载请注明来自askonline.tech,本文标题:android - Android canvas line strokeCap比简单的线条大


 Top