如何使用Skia或SkiaSharp绘制富文本

Mas*_*aka 2 c# skia xamarin skiasharp

我想FormattedStringSkiaSharp绘制iOS的Attributed Text或Xamarin.Forms等富文本,但我找不到如何.

我找到了这个DrawText方法,但它是用一种颜色和一种字体进行简单的文本渲染.没有混合颜色和/或字体,也没有粗体,斜体,透视或下划线等样式.

我是否必须使用自己的富文本渲染逻辑?

Mat*_*hew 7

使用该SKPaint类型是可行的.基本上,在绘制时,可以在paint上设置属性:

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);
Run Code Online (Sandbox Code Playgroud)

然后你可以画:

canvas.DrawText("Fancy Text", 30, 30, paint);
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!

对于其他效果,您可以使用SKShaderSKMaskFilter类型.这模糊了:

path.MaskFilter = SKMaskFilter.CreateBlur(SKBlurStyle.Normal, 5);
Run Code Online (Sandbox Code Playgroud)

  • SKPaint.UnderlineText 不再存在。有替代品吗? (2认同)