问题标签 [cgcontextref]

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 投票
0 回答
46 浏览

objective-c - CGContextRef/Objective C 到 CGContext/Swift 的混淆

我有一个用objective C编写的基类,由于许多原因,当子类需要在drawRect中绘制时,它用于获取CGContext。

我现在是一个用 Swift 编写的子类,它需要做一些绘图,所以在 super.. 中要求 CGContext

问题出在线路上

这不是编译错误:

我很困惑为什么会这样。CGContext 在 Swift 中被别名为 CGContextRef,所以我认为这会起作用。

有人可以解释/帮助吗?

0 投票
2 回答
7607 浏览

swift - 你需要在 Swift 中发布 CGContextRef 吗?

我已经使用 CGBitmapContextCreate 创建了一个上下文。我需要使用 CGContextRelease 释放它吗?我知道在 Objective-C 中答案是肯定的,但是在 Swift 中呢?

谢谢!

0 投票
1 回答
113 浏览

ios - 图形上下文有问题

我正在开发多个终端屏幕应用程序,因为我有一个UIView用于终端视图的自定义子类。每次我需要一个新的终端屏幕时,我都会准备一个新的视图。

这个视图类使用CGContextRef. 我面临的问题是上下文仅绘制创建的最后一个视图的文本,例如,如果我有 3 个终端并在第一个/第二个上绘制,它仍然在第三个上绘制。

到目前为止我的代码:

最后我自己解决了

[[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate: [NSDate date]];之后setNeedsDisplay

0 投票
0 回答
1080 浏览

ios - iOS CGContextRef 在 UIImage 上绘制描边颜色和边框文本

我正在尝试在 UIImage 上实现带有颜色和边框的绘制描边文本,但我无法获得解决方案。

我已经将此THLabel用于文本的笔画和边框,它工作正常,但只有当我将该代码复制到绘图图像中时,它才对我有用。

请参阅相同的屏幕截图。有什么建议么?

在 UIImage 方法上绘制文本:

用于文本方法的笔触颜色和边框的 THLabel 代码:

在此处输入图像描述

0 投票
1 回答
360 浏览

ios - 如何缩放图形,使用 CGContextRef 创建

我正在使用CGContextRef绘制折线图。我可以放大缩小此图以清楚地显示线条。

我正在使用此代码。

注意:- 我不想缩放视图。我想重新绘制线条以清晰显示。

0 投票
1 回答
247 浏览

ios - 从 UIGraphicsImageContext 裁剪区域 CGRect

我在当前视图中CGPath绘制了一个形状像箭头的形状。CGContext我想生成箭头的微型版本(缩略图),以将其添加ImageUITableView显示所有选定箭头的位置。

我成功地缩小了完整上下文的图片,使箭头小于应有的大小。理想情况下,我想将完整上下文的图像裁剪到箭头的范围内。然而,我还没有成功。有什么线索吗?谢谢您的帮助!

这是包含箭头的完整视图图片和我正在生成的缩略图的另一张图片。 在此处输入图像描述 在此处输入图像描述

理想情况下,上面的缩略图将被裁剪为仅包含箭头 - 而不是完整的上下文。

我使用的代码如下:

0 投票
2 回答
46 浏览

ios - drawRect 中不同颜色的不同行为:

我对以下代码的工作方式感到困惑。预计会产生一个被彩色圆圈包围的黑色圆盘。它适用于某些颜色(如评论中所述),但不适用于其他颜色。谁能解释这种神秘的行为?

0 投票
0 回答
620 浏览

ios - 检测到 iOS9 堆缓冲区溢出 - CGContextSetFillColor

我有一个自定义 drawRect: 函数,我在其中绘制到上下文。在两个不同的点上,我一直在点击“检测到堆缓冲区溢出”。这两行代码是:

似乎任何时候 CGContext 方法引用颜色时,都会检测到堆缓冲区溢出。我能够追踪的奇怪之处在于正在使用的 UIColor 对象的类型。每当 UIColor 的类型为“UIDeviceWhiteColorSpace”时,就会发生这种崩溃。只要 UIColor 的类型为“UIDeviceRGBColorSpace”,就不会发生这种崩溃。

产生“UIDeviceWhiteColorSpace”颜色类型的颜色示例有:

现在,我有一个解决方法来从 HEX 值生成“清晰”、“白色”和“浅灰色”颜色,我的 HEX 方法生成“UIDeviceRGBColorSpace”类型的 UIColor。

这段代码在 iOS7 和 iOS8 上运行良好一段时间了。

最终我的问题是:其他人是否正在经历这种情况?还有其他已知的解决方法吗?我们可以期待这会持续到 iOS 9 GM 中吗?

0 投票
1 回答
1160 浏览

swift - CGContext 和 CGContextRef 在 Swift 中一样吗?这是如何运作的?

ObjectiveC我正在将一些自定义子类移植UIViewSwift今天早上。为了使其更加“面向对象”,我遵循了CGContext使用方法进行扩展的示例。例如

因为我将客观的 C 风格消息(例如-(void) drawOutline: (CGContextRef) cr {...})转换为 Swift 风格的消息而没有给予太多关注(例如func drawOutline(cr:CGContextRef) {...}),所以我一开始并没有意识到我在传递CGContextRef参数,而是扩展了CGContext(不是 Ref)。但它奏效了!

更奇怪的是,当我将那些CGContextRef' 更改为 just CGContext's 时。它仍然有效。不仅编译,而且正确运行和绘制。为了好玩,我改成了extension CGContextRef. 然而它仍然继续工作。就好像 Swift 足够聪明,可以将它们归结为同一件事。是吗?还是这里发生了一些更微妙/更酷的事情?

0 投票
1 回答
139 浏览

ios - 如何正确更新使用 CGContextScaleCTM 和 CGContextTranslateCTM 放大和翻译的 uiview

我有一个 uiview B,它是另一个 uiview A 的放大部分(“touchPoint”周围的区域被放大)。当“touchPoint”发生变化时,我希望 B 更新其显示。我在 B 中有以下函数,它确实更新了(当我调用 B.setNeedsDisplay() 时),但它使旧内容以某种方式可见,就像褪色的背景图像一样。你们知道为什么旧的内容仍然出现,为什么会出现这种褪色的效果吗?是因为我放大的区域有透明背景吗?如何解决?

我本来想发布一张图片,但我还没有足够的 stackOverflow 点... :-)

感谢您的任何指点!