在按钮上绘制三角形

3
在我创建的一个继承自Button的类中,我重写了onDraw函数,在按钮右侧创建了一个指向中心的三角形:
Desired result 但是实际上,我得到的结果是这样的:
Actual result 以下是我的代码:
Paint paint = new Paint();

@Override
public void onDraw(Canvas canvas)
{
    Paint paint = new Paint();

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

    paint.setStrokeWidth(4);
    paint.setStyle(Paint.Style.FILL_AND_STROKE);
    paint.setAntiAlias(true);

    Point center = new Point(getWidth()/2, getHeight()/2);    
    Point a=new Point(getWidth(), 0);;
    Point b=new Point(getWidth(), getHeight());;

    paint.setColor(Color.RED);    

    Path path= new Path();
    path.setFillType(Path.FillType.EVEN_ODD);
    path.lineTo(b.x, b.y);
    path.lineTo(center.x, center.y);
    path.lineTo(a.x, a.y);
    path.close();
    canvas.drawPath(path, paint);
}
1个回答

2

您忘记移动到其初始点。

类似这样的操作:

path.moveTo(point1_draw.x,point1_draw.y);

在您第一次使用lineTo()之前

因为lineTo()需要一个“上一个点”来开始绘制线段。

void lineTo(float x, float y) // Add a line from the last point to the specified point (x,y).

因此,最终您的代码将如下所示:
    Path path= new Path();
    path.setFillType(Path.FillType.EVEN_ODD);
    path.moveTo(a.x, a.y);           // Move to a
    path.lineTo(center.x, center.y); // Segment from a to center
    path.lineTo(b.x, b.y);           // Segment from center to b
    path.close();                    // Segment from b to a
    canvas.drawPath(path, paint);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接