【问题标题】:How to draw rich text with Skia or SkiaSharp如何使用 Skia 或 SkiaSharp 绘制富文本
【发布时间】:2017-02-03 23:57:32
【问题描述】:

我想用 SkiaSharp 绘制像 iOS 的 Attributed Text 或 Xamarin.Forms 的 FormattedString 这样的富文本,但我找不到方法。

我找到了DrawText 方法,但它适用于一种颜色和一种字体的简单文本渲染。没有混合颜色和/或字体,也没有粗体、斜体、删除线或下划线等样式。

我必须用我自己的富文本渲染逻辑来做吗?

【问题讨论】:

    标签: c# xamarin skia skiasharp


    【解决方案1】:

    这可以使用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);
    

    我希望这会有所帮助!

    对于其他效果,您可以使用SKShaderSKMaskFilter 类型。这有点模糊:

    path.MaskFilter = SKMaskFilter.CreateBlur(SKBlurStyle.Normal, 5);
    

    编辑

    一段时间后,似乎我们实际上有了一个更好的方法来绘制文本 - 而不仅仅是基本的下划线。我会全心全意地推荐 Brad Robinson 的这个库:https://github.com/toptensoftware/RichTextKit

    我的意思是,看看那美丽的东西!

    【讨论】:

    • SKPaint.UnderlineText 不再存在。有替代品吗?
    • This 是一个可以为您的目的移植的示例。或者,如果您不需要“花哨”,则只需在下方/通过画线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 2020-03-29
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    相关资源
    最近更新 更多