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
如何在xamarin中的图像上绘制多边形?_Xamarin_Drawing_Shapes_Skiasharp - Fatal编程技术网

如何在xamarin中的图像上绘制多边形?

如何在xamarin中的图像上绘制多边形?,xamarin,drawing,shapes,skiasharp,Xamarin,Drawing,Shapes,Skiasharp,我想在xamarin的图像上画一个多边形。 我已经用C#windows的形式实现了它。 下面是我在c#中使用windows窗体所做的截图,我想使用xamarin 我对此进行了搜索,发现SkiaSharp库可以做到这一点,但仍然没有找到如何使用xamarin做到这一点 这是我用来画多边形的C代码,但我需要把它转换成xamarin private void boxImg_Paint(object sender, PaintEventArgs e) { e.Graphics.S

我想在xamarin的图像上画一个多边形。 我已经用C#windows的形式实现了它。 下面是我在c#中使用windows窗体所做的截图,我想使用xamarin

我对此进行了搜索,发现SkiaSharp库可以做到这一点,但仍然没有找到如何使用xamarin做到这一点

这是我用来画多边形的C代码,但我需要把它转换成xamarin

private void boxImg_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
        e.Graphics.InterpolationMode = InterpolationMode.High;
        if (LstCalibratedPrev.Count != 0)
        {
            Pen thikpen = new Pen(Color.FromArgb(30, 144, 255), 3);
            e.Graphics.DrawPolygon(thikpen, LstCalibratedPrev.ToArray());
            Polygon pgon = new Polygon(LstCalibratedPrev.ToArray());
            foreach (PointF corner in LstCalibratedPrev)
            {
                Rectangle rect = new Rectangle((int)corner.X - object_radius   , (int)corner.Y - object_radius,    2 * object_radius + 1   , 2 * object_radius + 1);   //smaller rect
                Rectangle rect2 = new Rectangle((int)corner.X - object_radius2 , (int)corner.Y - object_radius2,   2 * object_radius2 + 1  , 2 * object_radius2 + 1);  
                e.Graphics.FillEllipse(Brushes.WhiteSmoke, rect);
                Pen Circle = new Pen(Color.FromArgb(30, 144, 255), 1);
                e.Graphics.DrawEllipse(Circle, rect2);
            }
        }
        if (LstCalibratedPrev.Count != 0)
        {
            e.Graphics.FillPolygon(new SolidBrush(Color2Transparent(T, Color.Black)), LstCalibratedPrev.ToArray());
        }
    }

在xamarin表单中,您可以使用

应用内共享将此添加到视图:



您还没有说明是使用Xamarin.Forms(XF)还是经典的Xamarin。无论哪种方式,您都可以使用每个平台的本机sdk库绘制线条(如果使用XF,则将其封装在自定义渲染器中,如@Crunch所示),或者使用第三方跨平台绘制库,如

我建议使用SkiaSharp。它功能强大、速度快,是一个真正的跨平台2D图形库,可用于“经典”项目以及XF。学习如何使用它是值得投资的。您将发现的大多数示例都适用于XF,但也可以适用于经典的Xamarin。SkiaSharp在SKCanvasView中绘制,您可以将其放置在要绘制的视图的顶部。SKCanvasView为每个平台的根视图类划分了子类,因此可以在iOS中作为子视图添加,也可以添加到Android中的任何布局(代码和axml中),或者添加到XF中的XF布局中

以下是一些帮助您的参考资料: