android - 如何在 android Canvas 上绘制实心三角形

标签 android android-canvas shapes

我有扩展 View 类的 MyView 类。 MyView 应该绘制实心三角形。我画了一个三角形,但我不能把它填满。这是我的 onDraw() 方法:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Paint paint = new Paint();

    paint.setColor(android.graphics.Color.BLACK);
    canvas.drawPaint(paint);

    paint.setStrokeWidth(4);
    paint.setColor(android.graphics.Color.RED);
    paint.setStyle(Paint.Style.FILL_AND_STROKE);
    paint.setAntiAlias(true);

    Point a = new Point(0, 0);
    Point b = new Point(0, 100);
    Point c = new Point(87, 50);

    Path path = new Path();
    path.setFillType(FillType.EVEN_ODD);
    path.moveTo(a.x, a.y);
    path.lineTo(b.x, b.y);
    path.moveTo(b.x, b.y);
    path.lineTo(c.x, c.y);
    path.moveTo(c.x, c.y);
    path.lineTo(a.x, a.y);
    path.close();

    canvas.drawPath(path, paint);
}

这是我得到的结果:

enter image description here

最佳答案

我找到了答案

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Paint paint = new Paint();

    paint.setColor(android.graphics.Color.BLACK);
    canvas.drawPaint(paint);

    paint.setStrokeWidth(4);
    paint.setColor(android.graphics.Color.RED);
    paint.setStyle(Paint.Style.FILL_AND_STROKE);
    paint.setAntiAlias(true);

    Point a = new Point(0, 0);
    Point b = new Point(0, 100);
    Point c = new Point(87, 50);

    Path path = new Path();
    path.setFillType(FillType.EVEN_ODD);
    path.lineTo(b.x, b.y);
    path.lineTo(c.x, c.y);
    path.lineTo(a.x, a.y);
    path.close();

    canvas.drawPath(path, paint);
}

关于android - 如何在 android Canvas 上绘制实心三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20544668/

相关文章:

android - 设置 applicationidsuffix 时找不到包名称的匹配客户端

java - Mychart 确实显示了 android 中的任何内容

Android:在路径内随机绘制框

silverlight - 如何创建不规则形状的UserControl?

JavaFX 将一个形状拖放到另一个形状上

android - 为什么我从 firebase 仪表板中删除 firebase 用户后仍然登录

android - 图像未使用 Html.fromhtml 在 TextView 中显示

java - Jogl 2.2.1 Windows 工作教程?

java - 计算估计的剩余下载时间

java - Android 绘图线 2 点