PieChart 扇形中间位置限制文字计算

发布于 2024-07-06 06:25:26 字数 1238 浏览 15 评论 0

  private void drawPieChart(Canvas canvas) {

    int centerX = getWidth() / 2;
    int centerY = getHeight() / 2;
    mPaint.setColor(mWrongColor);
    mRectF.set(centerX - mRadius, centerY - mRadius, centerX + mRadius, centerY + mRadius);
    float wrongPercent = mWrongPercent / 100f;
    canvas.drawArc(mRectF, mStartAngle, wrongPercent * 360 * mAnimaProgress, true, mPaint);


    if (!mAnimatorEnd) return;

    float textAngle = wrongPercent * (float) Math.PI + mStartRad;

    mPaint.setColor(Color.WHITE);
    mPaint.setTextAlign(Paint.Align.CENTER);
    mPaint.setTextSize(mTextSize);
    mPaint.setFakeBoldText(true);
    float startX, startY;
    if (mWrongPercent > 0) {
      startX = (float) (centerX + mRadius / 2 * Math.cos(textAngle));
      startY = (float) (centerY + mRadius / 2 * Math.sin(textAngle)) + mTextSize / 2;

      canvas.drawText(mWrongPercent + "", startX, startY, mPaint);
    }

    textAngle = (float) Math.PI * (1 + wrongPercent) + mStartRad;
    startX = (float) (centerX + mRadius / 2 * Math.cos(textAngle));
    startY = (float) (centerY + mRadius / 2 * Math.sin(textAngle)) + mTextSize / 2;

    canvas.drawText((100 - mWrongPercent) + "", startX, startY, mPaint);
  }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

层林尽染

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

emdigitizer10

文章 0 评论 0

残龙傲雪

文章 0 评论 0

奢望

文章 0 评论 0

微信用户

文章 0 评论 0

又爬满兰若

文章 0 评论 0

独孤求败

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文