android studio中的菱形形状

时间:2018-07-16 21:51:15

标签: android shapes

在使用路径在Android Studio上创建菱形时遇到麻烦。看来我的钻石多于一半,但我不知道自己在做错什么,为什么其余的都没有打印出来。我一直在尝试更改代码几小时,但没有任何效果。谁能指出我做错了吗?到目前为止,这是我的代码:

import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.drawable.shapes.Shape;

public class Diamond extends Shape {
private int strokeWidth;
private final int fillColor;
private int strokeColor;
private Path path;
private Paint strokePaint;
private Paint fillPaint;

public Diamond(int strokeWidth, int fillColor, int strokeColor) {
    this.strokeWidth = strokeWidth;
    this.fillColor = fillColor;
    this.strokeColor = strokeColor;

    this.strokePaint = new Paint();
    this.strokePaint.setStyle(Paint.Style.STROKE);
    this.strokePaint.setStrokeWidth(strokeWidth);

    this.fillPaint = new Paint();
    this.fillPaint.setStyle(Paint.Style.FILL);
    this.fillPaint.setColor(fillColor);
}
@Override
public void draw(Canvas canvas, Paint paint) {
    canvas.drawPath(path, fillPaint);
    canvas.drawPath(path, strokePaint);

}
@Override
protected void onResize(float width, float height) {
    super.onResize(width, height);
    path = new Path();
    path.moveTo(width/2, 0);
    path.lineTo(width, height);
    path.lineTo(width/2, height*4);
    path.lineTo(0, height);
    path.close();



}

}

1 个答案:

答案 0 :(得分:0)

我认为您应该只需要更改path.lineTo(width/2, height*4);即可将高度乘以path.lineTo(width/2, height*2);中的2,使用4可使下半部分比上半部分歪斜。在this page上还有一个绘制菱形的示例,您可以修改菱形以使用完整宽度绘制菱形,例如:

public void drawRhombus(Canvas canvas, Paint paint, int x, int y, int width) {
    int halfWidth = width / 2;

    Path path = new Path();
    path.moveTo(x, y + width); // Top
    path.lineTo(x - halfWidth, y); // Left
    path.lineTo(x, y - width); // Bottom
    path.lineTo(x + halfWidth, y); // Right
    path.lineTo(x, y + width); // Back to Top
    path.close();

    canvas.drawPath(path, paint);
}