【问题标题】:Drawing paths from a point where each path is distanced from the initial point从每条路径与初始点相距一定距离的点绘制路径
【发布时间】:2019-08-04 15:09:06
【问题描述】:

我在试图弄清楚如何从画布上的一个点绘制路径时遇到了一些麻烦,每条路径的起点与初始点的距离相等。为了说明我的意思,我到目前为止的代码能够生成这个:

想要的结果是这样的:

我的代码:

int n = 3;
int r;
double x;
double y;
point1 = new Point(mWidth/2, mHeight/2);
double angle;
double angleFactor;

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    for (int i = 0; i < 3; i++){
        angleFactor = 2 * Math.PI / n;
        angle = i * angleFactor;
        x = (point1.x) + r * Math.cos(angle);
        y = (point1.y) + r * Math.sin(angle);

        //Draw paths
        path.reset();
        path.moveTo(point1.x, point1.y);
        path.lineTo((float) x, (float) y);
        canvas.drawPath(path, paint);
    }

}

有没有简单的解决方案?

【问题讨论】:

    标签: java android canvas path point


    【解决方案1】:

    由于您希望直线的偏移量与中心点之间的距离很小,您可以像这样定义起始坐标:

    double xStart, xEnd;
    double yStart, yEnd;
    double offsetFraction = 0.1;
    

    onDraw()for 循环内:

    double lengthX = r * Math.cos(angle);
    double lengthY = r * Math.sin(angle);
    
    xStart = (point1.x) + offsetFraction * lengthX;
    yStart = (point1.y) + offsetFraction * lengthY;
    xEnd = (point1.x) + lengthX;
    yEnd = (point1.y) + lengthY;
    
    //Draw paths
    path.reset();
    path.moveTo((float) xStart, (float) yStart);
    path.lineTo((float) xEnd, (float) yEnd);
    canvas.drawPath(path, paint);
    

    【讨论】:

    • 完美!这正是我在谢谢你之后的样子!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多