问题标签 [uibezierpath]

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 投票
3 回答
2415 浏览

ios - UIBezierPath 绘图问题

我创建了一个名为 myBezierPaths 的类,有两个类型为 UIBezierPath 和 UIColor 的成员变量,然后我尝试使用此类的对象来绘制 bezierpath,但我没有得到 bezierpath,下面是我的代码

希望我的解释清楚,等待回复

问候兰吉特

0 投票
2 回答
21525 浏览

ios - UIBezierPath 描边 1px 线并填充 1px 宽度的矩形 - 不同的结果。

这是一个简单的绘图

在非视网膜 3GS 和模拟器上,第一行模糊,看起来比 1 px 宽,但第二行清晰。

不幸的是,我既没有 iPhone4 也没有新的 iPad 来测试,但在视网膜模拟器上,两条线看起来都一样。

问题:对于非视网膜和视网膜设备,矩形而不是描边是获得相同结果的唯一方法吗?

0 投票
2 回答
2600 浏览

objective-c - UIBezierPath 的橡皮擦

我在 iPad 应用程序中使用 UIBezierPath 进行免费手绘。我想将橡皮擦应用到

但是,我只想擦除其路径中的绘图不能使用路径颜色作为背景颜色,因为背景上有其他元素。

下面是我如何创建我的手绘图:

0 投票
4 回答
15026 浏览

ios - 如何获取 UIBezierPath 的反向路径

(这就是我能够通过一些网络搜索开始运行的)。

我有这条路。现在我想填充这条路径的反面,所以留下这部分并填充其他所有内容。我怎样才能完成编码?我没有太多这方面的信息。

问题

在此处输入图像描述

之前使用 Cemal Answer 后显示的区域仅显示一个带有红色笔划的圆圈。

编辑

在此处输入图像描述

0 投票
1 回答
326 浏览

iphone - 从裁剪的图像中删除不需要的区域

我正在通过触摸裁剪图像。为此,我正在使用UIBezierPath.

我可以裁剪出选定的区域,但不需要的区域(不在裁剪部分内)仍然没有占用空间。或者换句话说,我无法摆脱裁剪区域之外的区域。

那么,我怎样才能删除这个不需要/无用的区域?

这是我的代码:

0 投票
2 回答
3891 浏览

ios - 使用 UIBezierPath 和 CoreGraphics 自由手绘和擦除

我一直在尝试这么多,但还没有找到解决方案。我必须在 iOS 上实现绘画和擦除,所以我成功地使用UIBezierPath. 问题是,对于擦除,我通过 using 实现了与绘画相同的逻辑,kCGBlendModeClear但问题是我无法在已擦除的区域上重绘,这是因为在 drawRect 的每次传递中,我必须同时描边绘画和擦除路径。那么无论如何我们可以从绘图路径中减去擦除路径以获得结果路径,然后对其进行描边。我是 Core Graphics 的新手,期待您的回复和评论。或任何其他实现相同的逻辑。我不能使用橡皮擦作为背景颜色,因为我的背景是有纹理的。

0 投票
1 回答
1701 浏览

ios - UIBezierPath Array 渲染问题(如何使用 CGLayerRef 进行优化)

朋友们,我正在使用 UIBezierPaths 进行免费手绘,一切正常,为此我将路径存储在路径数组中,一切正常,在渲染时,我正在循环整个数组并渲染路径,但很快随着数组数量的增加,我在绘图时看到了延迟,下面是我的 drawRect 代码。请帮我找出我哪里出错了

代码根据@borrrden 的以下讨论更新

问候兰吉特

0 投票
1 回答
258 浏览

iphone - Lining Up Bezier curves taken from SVG files

So I am currently working on a subclass of UIView which uses TBXML to parse a SVG XML files and strip the 'g' path instructions out. Then it passes these sets of instructions to SvgToBezier - a simple parser that takes the path instructions as input and returns a UIBezierPath object. Then it draws them in the drawRect method.

The paths render fine, but the problem is they don't line up with each other the way they're supposed to (they way they show up in google chrome, adobe illustrator, etc)

I know the SVGKit library allows parsing of complex svg files, however I want to write this myself so I can expand my understanding of the concepts involved.

First I'll show you my drawRect method, followed by an example SVG file, it's expected output, and it's actual output drawn on the iPhone in a 300x300 rect.

Here's the Raw SVG

Here's the Expected Drawing Result

And here's the Actual iPhone Output (screenshot from iOS Simulator)

I've been experimenting with all kinds of calculations and CGAffineTransforms.. left all that out of the code because it will just confuse things imo.

Thanks for any and all help!

Cheers

EDIT: Including another case, just to illustrate the inconsistency (consistency?) of the problem.

Raw

Expected

Actual

0 投票
3 回答
313 浏览

iphone - UIBezierPath:视图截图检索不正确

我正在按照以下方式截屏。

在 UIView 我正在使用UIBezierPath.

我得到的截图是这样的

在此处输入图像描述

任何想法为什么上部被切割成空白?在 UIView 上,所有绘图都正确显示。


更新:当我绘制一条长路径时会发生这种情况,UIBezierPath当我释放我的画笔并获取屏幕截图时,它会正确获取屏幕截图。

0 投票
2 回答
4178 浏览

ios - 使用贝塞尔曲线绘制螺旋

这是针对 iPad 应用程序的,但它本质上是一道数学题。

我需要绘制一个不同(单调增加)线宽的圆弧。在曲线的开始,它会有一个起始厚度(比如说 2pts),然后厚度会平滑地增加,直到弧线的末端达到最大厚度(比如说 12pts)。

我认为最好的方法是创建一个 UIBezierPath 并填充形状。我的第一次尝试是使用两个圆弧(具有偏移中心),并且在 90° 以内都可以正常工作,但圆弧通常在 90° 到 180° 之间,因此这种方法不会削减它。

厚度增加的 90 度圆弧示例

我目前的方法是使用贝塞尔四边形或三次曲线制作一个轻微的螺旋形(一个从圆弧略微增长,一个略微缩小)。问题是我将控制点放在哪里,以便圆弧的偏差(也就是形状“厚度”)是我想要的值。

约束:

  • 形状必须能够以任意角度开始和结束(彼此在 180° 以内)
  • 形状的“厚度”(与圆的偏差)必须以给定值开始和结束
  • “厚度”必须单调增加(不能变大再变小)
  • 它必须看起来光滑,不能有任何急弯

我也对其他解决方案持开放态度。