2015-07-12 21 views
3

的onDraw三角一类我创建的延伸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); 
} 

回答

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);