我的问题是:文字没有显示在画布上
SKPaint _paint = new SKPaint();
using(Stream stream = _assembly.GetManifestResourceStream(fontPath))
{
_paint.Typeface = SKTypeface.FromStream(stream);
}
canvas.DrawText ("12345",X,Y,_paint);
如果我不使用“使用块”或“处理”,它就像一个魅力。
但是,如果我这样做,在它到达canvas.DrawText之前,_paint不为null,但FontMetrics,FontSpacing或TextSize中的所有值都等于0.
然后画布上没有文字。
我很困惑,你能给我一些建议吗?
谢谢。
答案 0 :(得分:0)
发生这种情况的原因是您正在处理流然后尝试使用它。 SKTypeface
获取流的所有权,您不得自行关闭它。当字体不再使用时,它可能会决定关闭流。
使用它的正确方法是打开流,将其传递给SKTypeface
,然后担心字体:
SKPaint _paint = new SKPaint();
Stream stream = _assembly.GetManifestResourceStream(fontPath);
_paint.Typeface = SKTypeface.FromStream(stream);
canvas.DrawText ("12345", X, Y,_paint);
返回给定流的新字体。流的所有权被转移,因此呼叫者不得再次引用它。