画布中的绘图文本 (SkiaSharp):不显示文本



我的问题是:文本无法显示在画布上

SKPaint _paint = new SKPaint();
using(Stream stream = _assembly.GetManifestResourceStream(fontPath))
{
_paint.Typeface = SKTypeface.FromStream(stream);
}
canvas.DrawText ("12345",X,Y,_paint);

如果我不使用"使用块"或"处置",它就像一个魅力。

但如果我这样做,在它到达画布之前。DrawText, _paint 不为 null,但 FontMetrics、FontSpacing 或 TextSize 中的所有值都等于 0。

然后画布上没有文本。

我很困惑,你能给我一些建议吗?

谢谢。

发生这种情况的原因是您正在释放流,然后尝试使用它。 SKTypeface 拥有流的所有权,您不得自行关闭它。一旦字体不再使用,它可能会决定关闭流。

使用它的正确方法是打开流,将其传递给SKTypeface然后只担心字体:

SKPaint _paint = new SKPaint();
Stream stream = _assembly.GetManifestResourceStream(fontPath);
_paint.Typeface = SKTypeface.FromStream(stream);
canvas.DrawText ("12345", X, Y,_paint);

https://developer.xamarin.com/api/member/SkiaSharp.SKTypeface.FromStream/p/System.IO.Stream/System.Int32/

返回给定流的新字体。流的所有权已转移,因此调用方不得再次引用它。

相关内容

  • 没有找到相关文章

最新更新