【问题标题】:Android Canvas Paint Arc BorderAndroid 画布绘制弧形边框
【发布时间】:2013-01-11 00:09:52
【问题描述】:

我通过绘制两条弧线来绘制一条带边框的弧线,一条在另一条之上,第一条稍大。

问题在于“稍微大一点”,这最终可能导致边框并不总是一直都是圆形的。

我正在绘制的两条弧线具有相同的半径,我只是通过在开始处添加一个度数和在结束处添加两个度数来使其更大(确保弧线两端的边界相等)并增加笔画宽度。

在提供的图片中,较粗的边框边缘是我可以做到的最小的边缘,而它仍然可见。 (偏离内弧-1度)

我考虑过用四个单独的调用来绘制弧形轮廓,两端分别为两条直线和两条弧线。对于我想要实现的目标,这似乎效率很低。

我想知道是否有人对我如何绘制边框有任何建议,尽可能减少绘制/画布旋转调用的次数。

当前解决方案的相关代码示例:

Paint mOutlinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
Paint mFillPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

mFillPaint.setStyle(Style.STROKE);
mFillPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
mFillPaint.setColor(Color.TRANSPARENT);
mFillPaint.setStrokeWidth(mValueWidth);

mOutlinePaint.setStyle(Style.STROKE);
mOutlinePaint.setStrokeWidth(mBorderWidth);
mOutlinePaint.setColor(Color.WHITE);

mRect.set(mHalfXSubRadius, mHalfYSubRadius, mHalfXAddRadius, mHalfYAddRadius);
canvas.drawArc(mRect, ARC_START-1, MAX_ARC+2, false, mOutlinePaint);
canvas.drawArc(mRect, ARC_START, MAX_ARC, false, mFillPaint);

【问题讨论】:

    标签: android canvas paint


    【解决方案1】:

    你不应该让你的圆弧变大,而是尝试绘制相同大小的圆弧(白色),X 像素右、下、上、左、角以及(共 8 幅图)。

    X 是你想要的边框尺寸。

    然后在中间绘制主弧(灰色)。

    伪代码:

    paint=white;
    drawArc(x,y+2);
    drawArc(x,y-2);
    drawArc(x+2,y+2);
    drawArc(x+2,y-2);
    drawArc(x-2,y+2);
    drawArc(x-2,y+2);
    drawArc(x+2,y);
    drawArc(x-2,y);
    
    paint=gray;
    drawArc(x,y);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多