drawInfoText method
绘制顶点文字
Implementation
void drawInfoText(Canvas canvas) {
// double r2 = radarMap.radius + 2; //下圆半径
// for (int i = 0; i < elementLength; i++) {
// Offset offset;
// canvas.save();
// if (i != 0) {
// canvas.rotate(360 / elementLength * i / 180 * pi + pi);
// offset = Offset(-50, r2);
// } else {
// offset = Offset(-50, -r2 - textStyle!.fontSize! - 8);
// }
// drawText(
// canvas,
// radarMap.indicator[i].name,
// offset,
// );
// canvas.restore();
// }
double innerRadius = radarMap.radius; // 内圆半径
double delta = 2 * pi / elementLength;
var startRa = innerRadius ;
var maxWidth = radarMap.maxWidth??40.0;
var top = 0.0;
var bottom = 0.0;
///角度
double angle = 0;
node.clear();
for (int i = 0; i < elementLength; i++) {
// drawText(
// canvas,
// radarMap.indicator[i].name,
// Offset(0 + startRa * sin(angle), 0 - startRa * cos(angle)),
// );
final paragraphBuilder = ui.ParagraphBuilder(ui.ParagraphStyle(
textAlign: TextAlign.center,
fontSize: textStyle!.fontSize??radarMap.radius * 0.10,
fontWeight: FontWeight.normal));
paragraphBuilder.pushStyle(ui.TextStyle(color: textStyle!.color , textBaseline: ui.TextBaseline.alphabetic));
paragraphBuilder.addText(radarMap.indicator[i].name);
var paragraph = paragraphBuilder.build();
paragraph.layout(ui.ParagraphConstraints(width: maxWidth));
// print("${0 + startRa * sin(angle)-paragraph.width/2}======${0 - startRa * cos(angle) - paragraph.height/2}");
// print("${0 + startRa * sin(angle)-paragraph.width/2}======${0 - startRa * cos(angle) - paragraph.height/2}");
var out = 10;
var pianyix = sin(angle)*(paragraph.width/2 + out) ;
var pianyiy = cos(angle)*(paragraph.height/2 + out);
var of = Offset(0 + startRa * sin(angle)-paragraph.width/2 +pianyix, 0 - startRa * cos(angle) - paragraph.height/2 - pianyiy);
var rect = Rect.fromCenter(center: Offset(0 + startRa * sin(angle) +pianyix -skewing, 0 - startRa * cos(angle) - pianyiy), width: paragraph.width, height:paragraph.height);
canvas.drawParagraph(paragraph, of);
angle += delta;
if(i == 0){
top = paragraph.height + out;
}
if(elementLength%2==0){
if(i == elementLength/2){
bottom = paragraph.height + out;
}
}else{
if(i == elementLength~/2){
bottom = paragraph.height + out;
}
if(i == elementLength~/2+1){
if(bottom<paragraph.height){
bottom = paragraph.height + out;
}
}
}
node.add(rect);
}
// print("${node.length}");
// node.forEach((element) {
// print("${element.left} . ${element.top} 11");
// });
WidgetsBinding.instance!.addPostFrameCallback((timeStamp) {
_widthHeight.call(top,bottom);
});
//
// for (int s = ring; s > 0; s--) {
// ///起始位置
// var startRa = innerRadius/ring * s - radarMap.radius * 0.05;
// Offset offset = Offset(-maxWidth/2, -startRa);
// // fontSize: textStyle!.fontSize ?? radarMap.radius * 0.16,
//
//
// final paragraphBuilder = ui.ParagraphBuilder(ui.ParagraphStyle(
// textAlign: TextAlign.center,
// fontSize: line?.textFontSize ?? radarMap.radius * 0.1,
// fontWeight: FontWeight.normal));
// paragraphBuilder.pushStyle(ui.TextStyle(color: line?.textColor??Colors.black , textBaseline: ui.TextBaseline.alphabetic));
// paragraphBuilder.addText(lineText!.call(s,ring));
// var paragraph = paragraphBuilder.build();
// paragraph.layout(ui.ParagraphConstraints(width: maxWidth));
// canvas.drawParagraph(paragraph, offset);
//
}