C# 如何使用SkiaSharp在Xamarin中创建简单动画
如何创建调用DrawCircle或DrawLine函数的简单动画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
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循环中,但这将帮助我实现我的目标,我还将看到文档