onDraw 三角形按钮
onDraw triangle on Button
在我创建的扩展 Button
的 class 中,我覆盖了 onDraw
函数以在指向中心的按钮右侧创建一个三角形:
相反,这是我得到的:
这是我写的:
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);
}
您忘记移动到它的初始点。
类似
path.moveTo(point1_draw.x,point1_draw.y);
在你第一次 lineTo()
之前
因为 lineTo()
需要 "last point" 来开始分段。
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);
在我创建的扩展 Button
的 class 中,我覆盖了 onDraw
函数以在指向中心的按钮右侧创建一个三角形:
相反,这是我得到的:
这是我写的:
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);
}
您忘记移动到它的初始点。
类似
path.moveTo(point1_draw.x,point1_draw.y);
在你第一次 lineTo()
因为 lineTo()
需要 "last point" 来开始分段。
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);