我在贝塞尔曲线的切线上绘制位图。问题是要在曲线的路径中心上对齐位图。引用了this solution,但没有帮助。
当前状态,如您所见,它与曲线的切线成直角旋转:
它应该是什么样(对绘画技巧很抱歉)。点应位于路径的中心:
它在代码中的外观:
private fun drawThumb(canvas: Canvas) {
calculateXY()
mThumbBitmap?.let {
val angleMatrix = Matrix()
val distance = (mProgressPathMeasure.length * getCurrentX() / measuredWidth.toFloat())
mProgressPathMeasure.getMatrix(
distance,
angleMatrix,
PathMeasure.POSITION_MATRIX_FLAG + PathMeasure.TANGENT_MATRIX_FLAG
)
canvas.drawBitmap(it, angleMatrix, mPaintThumb)
}
}
private fun calculateXY() {
mProgressPathMeasure.getPosTan(
mProgressPathMeasure.length * getCurrentX() / measuredWidth,
mCurrentXY,
mTan
)
}
问题是:如何根据矩阵旋转将位图以一半的高度向这个方向移动?