【问题标题】:Skiasharp text rendering off canvasSkiasharp 文本渲染脱离画布
【发布时间】:2020-01-10 17:46:39
【问题描述】:

我正在使用skiasharp 和xamarin 表单创建自定义控件。我遇到的情况是,当我尝试在画布的左上角绘制文本时,我必须偏移 y 坐标才能使文本在画布中呈现。我希望文本的 x y 坐标与矩形的 x y 坐标处于相同的位置。我错过了什么?

使用 Skiasharp.View.Forms - v1.68.1 off 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();
}

【问题讨论】:

    标签: xamarin skiasharp


    【解决方案1】:

    你可以设置y坐标为SKPaint.FontSpacing,这是推荐的行距。

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

    参考https://github.com/xamarin/xamarin-forms-samples/blob/f7cc661331b5db605e64e7efe83ef2b9fc644afb/SkiaSharpForms/Demos/Demos/SkiaSharpFormsDemos/Basics/SurfaceSizePage.cs#L38

    【讨论】:

    • 这是否意味着 DrawText 的 Y 坐标是文本的左下角而不是左上角?
    • 不行,Y坐标是到top的距离,检查docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/…
    • "请记住,您传递给 DrawText 方法的 X 和 Y 坐标指定了基线处文本的左侧。"这就是我一直在寻找的。谢谢
    猜你喜欢
    • 2020-07-30
    • 2023-03-20
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2011-02-15
    相关资源
    最近更新 更多