我想FormattedString
用SkiaSharp绘制 iOS 的 Attributed Text 或 Xamarin.Forms 之类的富文本,但我找不到方法。
我找到了该DrawText
方法,但它用于使用一种颜色和一种字体进行简单的文本渲染。没有混合颜色和/或字体,也没有粗体、斜体、删除线或下划线等样式。
我必须用我自己的富文本渲染逻辑来做吗?
使用该SKPaint
类型是可行的。基本上,当你绘制时,你设置了油漆的属性:
var paint = new SKPaint();
paint.StrikeThruText = true;
paint.TextSize = 24;
paint.Color = SKColors.Yellow;
paint.UnderlineText = true;
paint.Typeface = SKTypeface.FromFamilyName(
"Arial",
SKFontStyleWeight.Bold,
SKFontStyleWidth.Normal,
SKFontStyleSlant.Italic);
然后你可以画:
canvas.DrawText("Fancy Text", 30, 30, paint);
我希望这有帮助!
对于其他效果,您可以使用SKShader
和SKMaskFilter
类型。这有点模糊:
path.MaskFilter = SKMaskFilter.CreateBlur(SKBlurStyle.Normal, 5);
编辑
一段时间后,似乎我们实际上有了一个更好的方法来绘制文本——而不仅仅是基本的下划线。我会全心全意地推荐 Brad Robinson 的这个库:https ://github.com/toptensoftware/RichTextKit
我的意思是,看看那美丽的东西!