使用SkiaSharp在文本上投下阴影或边缘

时间:2018-02-17 06:24:16

标签: skiasharp

我试图弄清楚如何使用SkiaSharp创建的文本看起来像这样:

enter image description here

特别是文字的黑色边缘(似乎在左侧)。此屏幕截图来自我们使用Xamarin移植到Android的Java桌面应用程序。没有黑边,数字614看起来不太好。

我知道这个答案https://stackoverflow.com/a/40428587/540156,但它并没有给我足够的答案。我一直在SkPaint对象上使用各种属性。但我无法弄明白。

是否需要再次绘制文本,只是左边一点点?我试过了,看起来并不好。

由于

1 个答案:

答案 0 :(得分:2)

enter image description here

我知道图像并不完美,但它足够接近(希望如此)。你可能不得不使用暗示或其他东西来获得漂亮的文字。

您可能正在使用专为小字符设计的字体,我只看12分的花哨字体可能不会削减它。

canvas.Clear(new SKColor(19, 139, 4));

var paint = new SKPaint
{
    Color = SKColors.Black,
    IsAntialias = true,
    Style = SKPaintStyle.Fill,
    TextAlign = SKTextAlign.Center,
    TextSize = 11,
    Typeface = SKTypeface.FromFamilyName("Terminal", SKTypefaceStyle.Bold)
};
var coord = new SKPoint(info.Width / 2, (info.Height + paint.TextSize) / 2);
canvas.DrawText("614", coord, paint);

paint.Color = new SKColor(0, 255, 0);
coord.Offset(1, -1);
canvas.DrawText("614", coord, paint);