ios – UIBezierPath和NSBezierPath在绘制弧时产生不同的结果

ios – UIBezierPath和NSBezierPath在绘制弧时产生不同的结果,第1张

概述我有两段代码,其中一段完美无缺(iOS版本),另一段无法正常运行(Mac版本).我无法解决使用NSBezierPath而不是UIBezierPath的Mac版本的问题. iOS版本 我有一段代码完全按照我在iOS上使用UIBezierPath的方式工作.这是代码: let center = CGPoint(x: size.width / 2.0, y: size.height / 2.0)let 我有两段代码,其中一段完美无缺(iOS版本),另一段无法正常运行(Mac版本).我无法解决使用NSBezIErPath而不是UIBezIErPath的Mac版本的问题.

iOS版本

我有一段代码完全按照我在iOS上使用UIBezIErPath的方式工作.这是代码:

let center = CGPoint(x: size.wIDth / 2.0,y: size.height / 2.0)let radius = size.wIDth / 2.0let startAngle = anglelet endAngle = 180.0 - startAnglelet bezIErPath = UIBezIErPath()bezIErPath.addArcWithCenter(center,radius: radius,startAngle: startAngle.radians,endAngle: endAngle.radians,clockwise: true)println(bezIErPath)return bezIErPath

它产生以下输出

<UIBezIErPath: 0x7fe348f82910; <Moveto {42.677669529663689,42.677669529663689}>,<Curveto {7.3223304703363148,42.677669529663689} {32.914562235881945,52.440776823445439} {17.085437764118062,52.440776823445432}>

并显示以下图像

Mac OS X版

这正是我想要的,除了它是iOS.我想将此代码翻译为OS X / Cocoa.这就是我想出来的

let center = CGPoint(x: size.wIDth / 2.0,y: size.height / 2.0)let radius = size.wIDth / 2.0let startAngle = anglelet endAngle = 180.0 - startAnglelet bezIErPath = NSBezIErPath()bezIErPath.appendBezIErPathWithArcWithCenter(center,clockwise: true)println(bezIErPath)return bezIErPath

(它与iOS代码几乎完全相同).

这里的输出是

Path <0x600000122800>Bounds: {{-4.9018102839097546e-05,-4.9018102839077596e-05},{50.000098036205685,50.000094758067902}}Control point bounds: {{-0.18691031775632938,-0.18691031775632855},{50.373820635512658,50.37016203886877}}49.997651 25.342684 moveto50.186910 11.536862 39.148505 0.191608 25.342684 0.002349 curveto11.536862 -0.186910 0.191608 10.851495 0.002349 24.657316 curveto-0.186910 38.463138 10.851495 49.808392 24.657316 49.997651 curveto38.196255 50.183252 49.422202 39.556558 49.978864 26.027794 curveto

产生以下形状

两个代码段都给出了相同的输入并使用相同的方法来计算弧度等.据我所知,除了输出之外,两者之间的一切都是相同的.值得注意的是,我在绘制之后将每个路径转换为UIImages和NSImages.如果我发布我正在使用的代码,请告诉我.

我也尝试使用movetoPoint将两段代码都放到正确的起始位置(iOS上没有必要,没有解决OS X上的问题).

非常感谢您的帮助.

解决方法@H_301_52@ 事实证明,在iOS上,addArcWithCenter为startAngle和endAngle获取弧度,而在OS X上,appendBezIErPathWithArcWithCenter获取度数.

Here’s the link to the documentation for OS X.

总结

以上是内存溢出为你收集整理的ios – UIBezierPath和NSBezierPath在绘制弧时产生不同的结果全部内容,希望文章能够帮你解决ios – UIBezierPath和NSBezierPath在绘制弧时产生不同的结果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存