Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用SkiaSharp在Xamarin中创建简单动画_C#_Xamarin_Skiasharp - Fatal编程技术网

C# 如何使用SkiaSharp在Xamarin中创建简单动画

C# 如何使用SkiaSharp在Xamarin中创建简单动画,c#,xamarin,skiasharp,C#,Xamarin,Skiasharp,如何创建调用DrawCircle或DrawLine函数的简单动画 public void DrawCircle (SkiaSharp.SKPoint c, float radius, SkiaSharp.SKPaint paint); 我想推迟画圆圈。我已经阅读了所有关于C#xamarian动画的可能文档,无法找到一个简单的解决方案 以上内容中没有关于这个问题的内容 有人能告诉我从哪里开始画两个物体吗 public class SimpleCirclePage : ContentPage

如何创建调用DrawCircle或DrawLine函数的简单动画

public void DrawCircle (SkiaSharp.SKPoint c, float radius, SkiaSharp.SKPaint paint);
我想推迟画圆圈。我已经阅读了所有关于C#xamarian动画的可能文档,无法找到一个简单的解决方案

以上内容中没有关于这个问题的内容

有人能告诉我从哪里开始画两个物体吗

public class SimpleCirclePage : ContentPage
{
    public SimpleCirclePage()
    {
        SKCanvasView canvasView = new SKCanvasView();
        canvasView.PaintSurface += OnCanvasViewPaintSurface;
        Content = canvasView;
    }

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

        canvas.Clear();

        SKPaint paint = new SKPaint
        {
            Style = SKPaintStyle.Stroke,
            Color = Color.Red.ToSKColor(),
            StrokeWidth = 10
        };
        canvas.DrawCircle(info.Width / 3, info.Height / 2, 100, paint);
        // I want to draw the second circle after some delay.
        canvas.DrawCircle(info.Width / 3, info.Height / 3, 100, paint);
    }
}

您可以将
第二个圆的
默认半径设置为
0
,这样就不会在页面上绘制。然后经过一些延迟(我在这里设置
4000ms
),您可以将
radius
设置为
100
并重新绘制视图,第二个视图将出现。这是你想要的吗

public class SimpleCirclePage : ContentPage{

    float radius = 0;

    public SimpleCirclePage()
    {
        SKCanvasView canvasView = new SKCanvasView();
        canvasView.PaintSurface += OnCanvasViewPaintSurface;
        this.Content = canvasView;

        Device.StartTimer(TimeSpan.FromMilliseconds(4000), () =>
        {
            radius= 100;
            canvasView.InvalidateSurface();

            return false;
        });
    }

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

        canvas.Clear();

        SKPaint paint = new SKPaint
        {
            Style = SKPaintStyle.Stroke,
            Color = Color.Red.ToSKColor(),
            StrokeWidth = 10
        };

        canvas.DrawCircle(info.Width / 3, info.Height / 2, 100, paint);

        // I want to draw the second circle after some delay.
        canvas.DrawCircle(info.Width / 3, info.Height / 3, radius, paint);
    }
}

您可以阅读文档:

@jackhua-MSFT非常感谢!我想把它放到foreach循环中,但这将帮助我实现我的目标,我还将看到文档