Xamarin Skiasharp文本在画布外渲染

Xamarin Skiasharp文本在画布外渲染,xamarin,skiasharp,Xamarin,Skiasharp,我正在使用SkiaSharep和xamarin表单创建一个自定义控件。我遇到的问题是,当我尝试在画布的左上角绘制文本时,我必须偏移y坐标,以便文本在画布中呈现。我希望文本的x-y-co-ord与rect的x-y-co-ord处于相同的位置。我错过了什么 使用Skiasharp.View.Forms-v1.68.1关闭nuget 谢谢 protected override void OnPaintSurface(SKPaintSurfaceEventArgs args) { base.OnPa

我正在使用SkiaSharep和xamarin表单创建一个自定义控件。我遇到的问题是,当我尝试在画布的左上角绘制文本时,我必须偏移y坐标,以便文本在画布中呈现。我希望文本的x-y-co-ord与rect的x-y-co-ord处于相同的位置。我错过了什么

使用Skiasharp.View.Forms-v1.68.1关闭nuget

谢谢

protected override void OnPaintSurface(SKPaintSurfaceEventArgs args)
{
  base.OnPaintSurface(args);

  SKImageInfo info = args.Info;
  SKSurface surface = args.Surface;
  SKCanvas canvas = surface.Canvas;

  canvas.Clear();
  canvas.Save();

  using var paint = new SKPaint {IsAntialias = true, Color = Color.Black.ToSKColor(), Style = SKPaintStyle.Stroke};

  canvas.DrawRect(0, 0, info.Width, info.Height, paint);

  canvas.DrawText("Off screen", 0, 0, paint);
  canvas.DrawText("On screen", 0, 10, paint);

  canvas.Restore();
}

您可以将y坐标设置为
SKPaint.FontSpacing
,这是建议的行距

 canvas.DrawText("SKCanvasView Height and Width:", 0, paint.FontSpacing, paint);

请参阅,您可以将y坐标设置为SKPaint.FontSpacing,这是建议的行距

 canvas.DrawText("SKCanvasView Height and Width:", 0, paint.FontSpacing, paint);

参考

这是否意味着DrawText的Y坐标是文本的左下角,而不是左上角?不,Y坐标是距离顶部的距离,请选中“请记住,传递给DrawText方法的X和Y坐标指定了文本在基线处的左侧。”这就是我要寻找的。谢谢,这是否意味着DrawText的Y坐标是文本的左下角,而不是左上角?不,Y坐标是距离顶部的距离,请选中“请记住,传递给DrawText方法的X和Y坐标指定文本在基线处的左侧。”这就是我要找的。谢谢