我正在使用SkiaSharp绘制图形。现在,我想在X轴上添加轴描述(星期一,星期二,...)。
这里的重要代码是:
foreach(string key in surveyAnswers.Keys)
{
SKPath currentTextPath = new SKPath();
currentTextPath.MoveTo((float)(info.Width * borderOffset + i * xStepSize - 70), (float)(info.Height * borderOffset + (answerPossibilitiesCount - 1) * yStepSize + 70));
currentTextPath.RLineTo(70, -70);
canvas.DrawTextOnPath(key, currentTextPath, 0, 0, paint);
i++;
}
它为我提供了正确定位的路径,在该路径上可以绘制文本。问题在于路径的长度是固定的。我将其设置为70高和宽,这会在较短的文本上留出空间,而将较长的文本剪掉。
可以找到一个示例here。
我想过一些解决问题的方法,尽管没有用,因为它们需要不受支持的操作或我没有的信息。
如何使文本与图形对齐?
答案 0 :(得分:0)
我已经使用pathLength变量解决了这个问题,该变量取决于字体大小和文本长度。
float pathLenght = (float)((key.Length * (17.0f/25.0f * textSize)) / Math.Sqrt(2));
17/25的比例似乎在许多字体大小上都很好。
只要有人需要,我都会用插入的解决方案发布上面的代码
foreach(string key in surveyAnswers.Keys)
{
float pathLenght = (float)((key.Length * (17.0f/25.0f * textSize)) / Math.Sqrt(2));
SKPath currentTextPath = new SKPath();
currentTextPath.MoveTo((float)(info.Width * borderOffset + i * xStepSize - pathLenght), (float)(info.Height * borderOffset + (answerPossibilitiesCount - 1) * yStepSize + pathLenght));
currentTextPath.RLineTo(pathLenght, -pathLenght);
canvas.DrawTextOnPath(key, currentTextPath, 0, 0, paint);
i++;
}