问题标签 [cgpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6656 浏览

ios - 如何使用 MKOverlayPathView 创建路径?

我一直在查看 Apple 的 iOS 类参考文档,但不幸的是我并不明智。我已经下载了他们的示例代码KMLViewer,但他们过于复杂了......我真正想知道的是如何生成路径并将其添加到MKMapView. 文档谈到使用 a CGPathRef,但并没有真正解释如何使用。

0 投票
2 回答
6671 浏览

cocoa - 用数百万点绘制一条线的有效方法

我正在 Cocoa 中编写一个具有多种缩放选项的音频波形编辑器。在最宽处,它显示了整首歌曲的波形(大约 1000 万个样本)。在最窄处,它显示了声波的像素精确表示(视图中约 1000 个样本)。我希望能够在这些缩放级别之间平滑过渡。一些像 Ableton Live 这样的商业编辑器似乎以一种非常便宜的方式来做到这一点。

我当前的实现满足了我想要的缩放范围,但效率低下且不稳定。该设计很大程度上受到这篇关于用石英绘制波形的优秀文章的启发:

http://supermegaultragroovy.com/blog/2009/10/06/drawing-waveforms/

我为音频文件创建了多个 CGMutablePathRef's 在不同的减少级别。当我一直放大时,我使用已减少到每 x 千个样本一个点的路径。当我一直放大时,我使用包含每个样本的点的路径。当我处于减少级别之间时,我会水平缩放路径。这使它具有功能性,但仍然非常昂贵,并且在减少级别之间转换时会出现伪影。

关于如何降低成本的一个想法是取消抗锯齿。我的编辑器中的波形是抗锯齿的,而 Ableton 中的波形不是(参见下面的比较)。 在此处输入图像描述 在此处输入图像描述

我看不到关闭 CGMutablePathRef 的抗锯齿的方法。在 Cocoa 的世界中是否有 CGMutablePathRef 的非抗锯齿替代品?如果没有,是否有人知道一些 OpenGL 类或示例代码可能会让我更有效地绘制我的大线?

2014 年 1 月 21 日更新:现在有一个很棒的库可以完全满足我的需求:https ://github.com/syedhali/EZAudio

0 投票
1 回答
592 浏览

iphone - 如何在 iPhone 线图中的图形上获取点

大家好,

我正在研究折线图。我能够完美地绘制折线图。但问题是我想要如下图所示的效果。

在此处输入图像描述

我想要滑块效果。我正在使用 CGPath 存储图形路径。如果滑块在图表上移动,则值必须显示在上部标签上。

请帮我。

0 投票
2 回答
1869 浏览

serialization - 依次组合多个 CAAnimation

我正在阅读有关 CATransactions 的信息,然后认为这可能有助于解决我的问题。

这是我不想做的:我在同一层中有 3 个动画,它们都有自己的持续时间。我使用带有 CGMutablePathRef 的 CAKeyframeAnimation 创建动画。

比如说:

  • anim1 -> 持续时间 5s
  • anim2 -> 3s
  • anim3 -> 10s

现在我想按顺序对它们进行序列化。我尝试使用 CAAnimationGroup 但动画同时运行。我读到了 CATransaction,这是一个可能的解决方案吗?你能给我举个小例子吗?

感谢帮助 !

0 投票
2 回答
2678 浏览

uikit - 从多个 CGpath 构建 CAShapeLayer

我有一个 CAShapeLayer,它的形状来自路径。这将创建一个可以操作的图层对象,例如移动和旋转。我的问题是我需要图层对象由多个路径组成。例如想象美国地图;有主要的形状,还有阿拉斯加。两种形状都没有连接,但它们是同一个实体,我需要它们成为单个 CAShapeLayer 中的单个对象,这样当我移动图层时,US 和 Alaska 都会一起移动。

0 投票
2 回答
2151 浏览

uikit - CAShapeLayer 缓慢的用户交互

我有一个 CAShapeLayer,它必须完成一个简单的任务,即在用户手指的引导下在屏幕上移动。

问题是移动太慢了。该层确实移动,但有一个滞后,感觉很慢。

我有另一个测试应用程序,其中 UIImage 被移动并且完全没有滞后并且图像立即移动。

我能做些什么来克服这个问题?

谢谢!

0 投票
2 回答
949 浏览

iphone - CGPath 屏蔽了 CGPoints

我正在尝试构建这个: 在此处输入图像描述

白色背景实际上是透明的。我知道如何将 CGPath 剪辑到设定区域,但这似乎是另一种方式,因为我需要从填充的 CGPath中减去区域。

我想正确的方法是从 CGPath 中减去整个外圆,然后在我的 CGPoints 处绘制更小的圆,但我不确定如何执行前者。谁能指出我正确的方向?

0 投票
1 回答
1799 浏览

ios - 调整 UIView 的大小以适应 CGPath

我有一个 UIView 子类,用户可以在其上添加随机 CGPath。CGPath 是通过处理 UIPanGestures 添加的。

我想将 UIView 的大小调整为包含 CGPath 的最小矩形。在我的 UIView 子类中,我重写了 sizeThatFits 以返回最小尺寸:

这可以按预期工作,并且 UIView 的大小被调整为返回的值,但 CGPath 也按比例“调整大小”,导致与用户最初绘制的路径不同。例如,这是用户绘制路径的视图:

绘制路径

这是调整大小后的路径视图:

在此处输入图像描述

如何调整 UIView 的大小而不是“调整”路径?

0 投票
1 回答
268 浏览

iphone - CATiledlayer 扭曲了 CGPath

我正在使用 CATiledlayers 和 UIScrollviews 来绘制不同细节级别的 CGPath。我正在画大图(4000x4000)。在 iPhone 上,这些大图片的图像会失真。

我终于找到了解决办法。我的错误是我将 tileSize 设置为我正在绘制的图像的大小(从某处的 PDF 示例演示中复制)。解决方案是将 tileSize 设置为最大 2000x2000。

0 投票
7 回答
18667 浏览

iphone - 如何将 SVG 导入/解析到 UIBezierpaths、NSBezierpaths、CGPaths?

我正在尝试将矢量绘图程序中的路径导入 ios 环境。我想让它们进入 CGpaths 或 UIbezierpaths。我最感兴趣的是从 adobe illustrator 中导入路径。最好的方法似乎是保存为 svg 然后导入。

我找到了一些用于解析描述路径的导出 SVG 文件的资源。但是,我发现的所有内容都只处理绝对路径而不是相对路径。下面的路径有大写 C 和小写 C。我知道如何解析大写 C(绝对路径),但我不知道如何解析小写 c(相对路径)

我正在寻找有关编写用于将 svg 文件导入 ios/cocoa 的解析器的帮助。我认为通过在互联网上搜索数周来进行判断是非常必要的。

这是我想导入到我的 iphone 应用程序中的路径示例。我不想导入图像,我想要路径本身。所以,我可以操纵它。任何帮助将非常感激。

如果这都是绝对路径,我现在可以解决这个问题。真正让我困惑的是相对(即小写(c)路径)。