我正在做化妆申请。应用程序可以检测脸部的某些部分,例如眉毛和嘴巴,并使用检测路径将它们绘制成一条线。用户可以通过移动点来改变路径。但是当我进行缩放变焦时,我有一个问题,图像和线条被完美地缩放,但是在缩放后我无法移动该点。当这些点在开始时被检测到时,它们似乎保持在相同的点上。
这是应用示例的图片。
我使用onScale方法中的比例因子来缩放画布。
我脸上各有一个部分。他们有一个点和绘制方法来画线。我不知道如何根据缩放操作计算比例因子,以及每条线的点以相应地将点移动到比例因子。
这是主画布的绘制方法。
float pivotX, pivotY;
pivotX = width / 2;
pivotY = height / 2;
//draw and translate canvas
canvas.save();
canvas.translate(mPosX, mPosY);
canvas.scale(mScaleFactor, mScaleFactor, pivotX, pivotY);
canvas.drawBitmap(myBitmap, 0, 0, null);
//draw eyebrow
leftAdjustbrow.draw(canvas);
rightAdjustbrow.draw(canvas);
这是眉毛的绘制方法
public void draw(Canvas canvas) {
for (PointF point : points) {
canvas.drawPoint(point.x, point.y, paintPoint);
}
Path path = new Path();
path.moveTo(points[0].x, points[0].y);
path.lineTo(points[1].x, points[1].y);
path.moveTo(points[1].x, points[1].y);
path.lineTo(points[2].x, points[2].y);
path.moveTo(points[2].x, points[2].y);
canvas.drawPath(path, paint);
}