我正在使用Android的HoloGraphLibrary,但我需要饼图中每个细分的百分比(在其细分中)。
因为没有任何坐标系,我不能只找到段并添加一些文本,所以我需要一个聪明的技巧来做到这一点。我拥有的唯一价值观是: - 饼图的midX和midY坐标 - 内半径和外半径 - 每个段扫过(或覆盖360度我们的角度)
我已经设法获得标签的Y坐标,但对X坐标使用相同的方法并没有产生正确的结果。这是我到目前为止的代码:
canvas.drawText(slice.getTitle(), (float) (midX + (innerRadius + (radius - innerRadius)/2)*-1*Math.cos((currentSweep-padding)/2*(Math.PI/180) )), (float) (midY - (innerRadius + (radius - innerRadius)/2)*Math.cos((currentSweep)/2*(Math.PI/180))), paint);
任何人都可以帮助将标签集中在细分市场吗?
由于
答案 0 :(得分:2)
好吧,我的坏, 这是一个答案:
// add a text title centered in each slice :
textAngle += currentSweep;
mBlackColorPaint.setTextAlign(Paint.Align.CENTER);
System.out.println("title : " + slice.getTitle() + "Sweep : "+currentSweep + " Angle = "+currentAngle);
canvas.drawText(slice.getTitle(),
(float) (midX + (innerRadius + (radius - innerRadius)/2)*Math.sin((textAngle)*(Math.PI/360) )),
(float) (midY - (innerRadius + (radius - innerRadius)/2)*Math.cos((textAngle)*(Math.PI/360))),
mBlackColorPaint);
textAngle += currentSweep;
在设置Region对象
后将其放在onDraw()方法中答案 1 :(得分:0)
试试这个。它对我有用。
canvas.drawText(slice.getTitle(),
(float) (midX + (innerRadius + (radius - innerRadius)/2)*Math.sin((currentSweep)*(Math.PI/360) )),
(float) (midY - (innerRadius + (radius - innerRadius)/2)*Math.cos((currentSweep)*(Math.PI/360))),
mPaint);