首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Xamarin中用SkiaSharp动态绘制线

在Xamarin中用SkiaSharp动态绘制线
EN

Stack Overflow用户
提问于 2018-05-11 08:54:50
回答 1查看 2.6K关注 0票数 2

我试图通过使用包SkiaSharp来动态绘制线条。

我在我的xaml中定义了如下控件:

代码语言:javascript
复制
<skia:SKCanvasView x:Name="CanvasView" PaintSurface="OnCanvasViewPaintSurface" />

这是我在课堂后面的代码:

代码语言:javascript
复制
private SkiaSharp.SKCanvas canvas;
private SkiaSharp.SKSurface surface;

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

    canvas.Clear();
    SkiaSharp.SKPaint thinLinePaint = new SkiaSharp.SKPaint
    {
        Style = SkiaSharp.SKPaintStyle.Stroke,
        Color = SkiaSharp.SKColors.Blue,
        StrokeWidth = 6
    };
    canvas.DrawLine(0, 0, 50, 50, thinLinePaint);
}

上面的部分工作良好,在启动时加载视图时将绘制一条蓝线。但是我想要做的是动态地画新的线并删除旧的线。

代码语言:javascript
复制
public void DrawNewLine()
{
    canvas.Clear();
    SkiaSharp.SKPaint thickLinePaint = new SkiaSharp.SKPaint
    {
        Style = SkiaSharp.SKPaintStyle.Stroke,
        Color = SkiaSharp.SKColors.Red,
        StrokeWidth = 16
    };
    canvas.DrawLine(0, 0, 50, 50, thickLinePaint);
}

我正在使用之前声明的画布字段,但它不起作用。当使用画布对象时,应用程序将在运行时崩溃。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-12 19:18:09

您需要使用SKCanvasView.InvalidateSurface()方法在内部召回OnCanvasViewPaintSurface()。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50288603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档