【问题标题】:Center align circle on SkiaSharp Canvas in Xamarin Forms在 Xamarin 表单中的 SkiaSharp 画布上居中对齐圆圈
【发布时间】:2017-07-13 11:28:29
【问题描述】:

我有以下代码,它在 Xamarin Forms 中的画布上绘制一个圆圈。我正在指定圆心的位置,如下所示。

  canvas.DrawCircle(100, 100, 150, circleFill);

在不指定中心位置的情况下将圆对齐画布中心的正确方法是什么?

注意:我在 circleFill 和 circleBorder 中尝试了 SKPaintSKTextAlign.Center 属性。但这并没有帮助

    private void OnPainting(object sender, SKPaintSurfaceEventArgs e)
    {
        var surface = e.Surface;
        var canvas = surface.Canvas;
        canvas.Clear(SKColors.White);

        ///GRADIENT--------------------------------------------------------------------
        var colors = new SKColor[] { new SKColor(6, 107, 249), new SKColor(27, 162, 210) , new SKColor(36, 182, 197) };
        var shader = SKShader.CreateLinearGradient(new SKPoint(300, 0), new SKPoint(300, 600), colors, null, SKShaderTileMode.Clamp);
        var paint = new SKPaint() { Shader = shader };
        canvas.DrawPaint(paint);

        // DRAWING SHAPES
        var circleFill = new SKPaint
        {
            IsAntialias = true,
            Style = SKPaintStyle.Fill, //FILL
            Color = SKColors.Blue
        };
        canvas.DrawCircle(100, 100, 150, circleFill);

        var circleBorder = new SKPaint
        {
            IsAntialias = true,
            Style = SKPaintStyle.Stroke, //STROKE
            Color = SKColors.Teal,
            StrokeWidth = 15
        };
        canvas.DrawCircle(100, 100, 150, circleBorder);
    }

XAML

<Grid>
    <views:SKCanvasView PaintSurface="OnPainting" EnableTouchEvents="True" Touch="OnTouch">
    </views:SKCanvasView>
</Grid>

【问题讨论】:

    标签: xamarin xamarin.forms skiasharp


    【解决方案1】:

    您可以根据画布大小计算位置,例如

    var x = e.Info.Width / 2;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 2016-07-16
      相关资源
      最近更新 更多