ios - 将 PointF[] 转换为 CGPoint[]

标签 ios xamarin xamarin.ios

documentation 中的示例代码CGContext.AddLines 没有为我编译。

ctxt.AddLines (new PointF[] {
    new PointF (30, 30),
    new PointF (60, 30),
    new PointF (40, 40)
});

错误是

cannot convert from 'System.Drawing.PointF[]' to 'CoreGraphics.CGPoint[]'

我确实注意到这有效:

  public void AddStraightLine(PointF start, PointF end)
  {
     var path = new CGPath();

     path.AddLines(new CGPoint[]
     {
        start,
        end
     });
  }

最佳答案

文档有点过时,您必须将其切换为使用 CoreGraphics.CGPoint,这是最新且唯一的重载,而不是 System.Drawing.PointF .这是要求切换到 iOS 的结果 Unified API .

从文档移植的 iOS 的相应统一更改看起来像这样:

using (var ctxt = UIGraphics.GetCurrentContext())
{
    var startingPoint = new CGPoint(20, 20);
    ctxt.MoveTo(startingPoint.X, startingPoint.Y);
    ctxt.SetStrokeColor(UIColor.Red.CGColor);
    var sz = new CGSize(2, 2);
    Func<CGPoint, CGPoint> offset = (CGPoint pt) => new CGPoint(pt.X - 1, pt.Y - 1);
    ctxt.AddEllipseInRect(new CGRect(offset(startingPoint), sz));

    ctxt.AddLines(new CGPoint[]
    {
        new CGPoint (30, 30),
        new CGPoint (60, 30),
        new CGPoint (40, 40)
    });

    ctxt.StrokePath();
}

关于ios - 将 PointF[] 转换为 CGPoint[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50279042/

相关文章:

ios - 如何在单击按钮时 swift 关闭弹出窗口?

ios - 使用 AudioKit 捕获系统或应用程序音频

xaml - Xamarin.Forms - 将元素放置在另一个元素之上。

c# - 如何在 Prism 应用程序中手动解析类型时获得正确的 INavigationService 实例

c# - Xamarin iOS 导航栏中 UIBarButtonItem 之间的间距过大

xamarin.ios - "Invalid Handle"创建CGBitmapContext

xamarin.forms - 如何在 Xamarin.Forms 中获取用于推送通知目的的设备 token ?

ios - 在创建新 key 并删除旧 key 后,我在我的 iOS Xcode 项目中使用适用于 iOS 的 Google Maps SDK 的不受限制的 api key

ios - UITableView 删除行,commitEditingStyle 方法不触发?

android - 如何增加开关控件 Xamarin 表单的大小?