首页 > 解决方案 > 如何使用 SkiaSharp 从字符串文本创建位图

问题描述

我创建了一个条目,您可以在其中键入一个值,但现在我想创建一个包含条目文本的位图。获得位图后,我可以在 SkiaSharp 中加载它并在其上使用 BitmapModifiers。

这可能吗?

标签: xamarinxamarin.formsxamarin.androidxamarin.ios

解决方案


我建议您在 github 上浏览这些示例。

虚拟样本可能如下所示:

这是 xaml 页面:

<StackLayout>
    <Entry x:Name="InputText" />
    <Button Text="Create Bitmap" Clicked="Button_Clicked" />
</StackLayout>

代码隐藏:

SKBitmap helloBitmap;

void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args)
{
    SKImageInfo info = args.Info;
    SKSurface surface = args.Surface;
    SKCanvas canvas = surface.Canvas;

    canvas.Clear(SKColors.Aqua);

    canvas.DrawBitmap(helloBitmap, 0, 0);
}

private void Button_Clicked(object sender, EventArgs e)
{
    CreateBitmapFromText(InputText.Text);
}

private void CreateBitmapFromText(string text)
{
    // Create bitmap and draw on it
    using (SKPaint textPaint = new SKPaint { TextSize = 48 })
    {
        SKRect bounds = new SKRect();
        textPaint.MeasureText(text, ref bounds);

        helloBitmap = new SKBitmap((int)bounds.Right,
                                    (int)bounds.Height);

        using (SKCanvas bitmapCanvas = new SKCanvas(helloBitmap))
        {
            bitmapCanvas.Clear();
            bitmapCanvas.DrawText(text, 0, -bounds.Top, textPaint);
        }
    }

    SKCanvasView canvasView = new SKCanvasView();
    canvasView.PaintSurface += OnCanvasViewPaintSurface;
    Content = canvasView;
}

推荐阅读