【问题标题】:Bezier curve and canvas贝塞尔曲线和画布
【发布时间】:2012-04-03 12:14:13
【问题描述】:

如何在画布中绘制贝塞尔曲线。我只有起点和终点。我想从起点到终点画线。我该怎么做?

【问题讨论】:

    标签: android android-canvas


    【解决方案1】:

    您可以为此使用Path.quadTo()Path.cubicTo()。示例可以在 SDK 示例 (FingerPaint) 中找到。在您的情况下,您只需要计算中间点,然后将您的三个点传递给quadTo()..

    一些代码给你:

    • (x1,y1)(x3,y3) 分别是您的起点和终点。
    • 只创建一次绘制对象(例如在您的构造函数中)

      Paint paint = new Paint() {
          {
              setStyle(Paint.Style.STROKE);
              setStrokeCap(Paint.Cap.ROUND);
              setStrokeWidth(3.0f);
              setAntiAlias(true);
          }
      };
      
      final Path path = new Path();
      path.moveTo(x1, y1);
      
      final float x2 = (x3 + x1) / 2;
      final float y2 = (y3 + y1) / 2;
      path.quadTo(x2, y2, x3, y3);
      canvas.drawPath(path, paint);
      

    【讨论】:

    • 可以给曲线吗?
    • 这会产生一条直线,如果你想要一条曲线,那么将控制点(此处为 (x2,y2))更改为其他东西。一个简单的例子是:- x2 = (x3+x1)/3 y2 = (y3+y1)/3
    【解决方案2】:

    使用Path,您可以绘制三次和二次贝塞尔曲线。见cubicTo()quadTo()

    【讨论】:

      【解决方案3】:

      您需要设置颜色...您的代码正确,并将quadTO() 中的x3,x3 更改为x3,y3

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多