Android路径未关闭,我无法填充颜色

时间:2019-07-02 14:41:15

标签: android canvas kotlin path

我有一个自定义的squircle android视图。我正在绘制路径,但是无法用颜色填充路径。 StackOverflow要求我提供更多详细信息,但我认为我无法对此做出更好的解释。我所需要做的就是用代码填充路径。如果您需要看全班,请告诉我。

init {
    val typedValue = TypedValue()
    val theme = context!!.theme
    theme.resolveAttribute(R.attr.colorAccentTheme, typedValue, true)
    paint.color = typedValue.data
    paint.strokeWidth = 6f
    paint.style = Paint.Style.FILL_AND_STROKE
    paint.isAntiAlias = true
    shapePadding = 10f
}

open fun onLayoutInit() {
    val hW = (this.measuredW / 2) - shapePadding
    val hH = (this.measuredH / 2) - shapePadding

    /*
    Returns a series of Vectors along the path 
    of the squircle
     */
    points = Array(360) { i ->
        val angle = toRadians(i.toDouble())
        val x = pow(abs(cos(angle)), corners) * hW * sgn(cos(angle))
        val y = pow(abs(sin(angle)), corners) * hH * sgn(sin(angle))
        Pair(x.toFloat(), y.toFloat())
    }
    /*
    Match the path to the points
     */
    for (i in 0..points.size - 2) {
        val p1 = points[i]
        val p2 = points[i + 1]
        path.moveTo(p1.first, p1.second)
        path.lineTo(p2.first, p2.second)
    }

    /*
    Finish closing the path's points
     */
    val fst = points[0]
    val lst = points[points.size - 1]

    path.moveTo(lst.first, lst.second)
    path.lineTo(fst.first, fst.second)

    path.fillType = Path.FillType.EVEN_ODD

    path.close()

    postInvalidate()
}
override fun onDraw(canvas: Canvas?) {

    canvas?.save()
    canvas?.translate(measuredW / 2, measuredH / 2)
    canvas?.drawPath(path, paint)
    canvas?.restore()

    super.onDraw(canvas)

}

}

路径笔触效果很好,但是我无法用颜色填充它。

0 个答案:

没有答案