如何在xamarin中的图像上绘制多边形?
我想在xamarin的图像上画一个多边形。 我已经用C#windows的形式实现了它。 下面是我在c#中使用windows窗体所做的截图,我想使用xamarin 我对此进行了搜索,发现SkiaSharp库可以做到这一点,但仍然没有找到如何使用xamarin做到这一点 这是我用来画多边形的C代码,但我需要把它转换成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
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布局中
以下是一些帮助您的参考资料: