【问题标题】:How to draw curves and straight lines in one image?如何在一张图像中绘制曲线和直线?
【发布时间】:2014-01-30 02:30:34
【问题描述】:

我正在尝试绘制一个基本上是圆角矩形的东西,它的一端是一个正方形。有点像电池。我有一些限制,基本上就是必须只使用一个绘画对象来完成,并且应该能够支持笔画。

这是我目前的代码:

int width = 0;
int height = 0;

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    // myPath outline
    Point[] myPath = { new Point(20, 20), new Point(width, 20), new Point(width, height), new Point(20, height),
            new Point(20, height - 20), new Point(0, height - 20), new Point(0, height - 40),
            new Point(20, height - 40) };

    // Paint
    Paint paint = new Paint();
    int color = 0xffff0000;
    paint.setColor(color);
    paint.setAntiAlias(true);
    // paint.setPathEffect(new CornerPathEffect(15));
    paint.setStyle(Paint.Style.FILL);

    // Path moves
    Path path = new Path();

    path.moveTo(myPath[0].x, myPath[0].y);
    int j = myPath.length;
    for (int i = 0; i < j; i++) {
        path.lineTo(myPath[i].x, myPath[i].y);
    }
    path.close();

    Bitmap toDrawOn;
    toDrawOn = Bitmap.createBitmap(getWidth(), getHeight(), Config.ARGB_8888);
    Canvas ofScreen = new Canvas(toDrawOn);
    ofScreen.drawPath(path, paint);
    canvas.drawBitmap(toDrawOn, 0, 0, paint);

}

这给了我一个我正在寻找的电池形状,但我不知道如何在不修圆最后一个小正方形的角的情况下修圆前 4 个角。同样,我需要将其设为一个形状,因为稍后我需要对其应用描边。我也不能使用 9patch,因为我需要以编程方式更改颜色。

这是我的目标:

【问题讨论】:

    标签: java android path android-canvas paint


    【解决方案1】:

    使用path.quadTo(the javadoc for it)。因为这个形状太简单了,我就一行一行的写出来。这是它的开始。

    int borderRadius = 15;
    Path path = new Path();
    path.moveTo(borderRadius , 0);
    path.lineTo(width-borderRadius, 0); // top side
    path.quadTo(width, 0, width, borderRadius); // top right corner
    path.lineTo(width, height-borderRadius); // right side
    path.quadTo(width, height, width-borderRadius, height); // bottom right corner
    ...
    path.close();
    

    【讨论】:

    • 谢谢。太棒了。我现在将尝试完成我的形状。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多