问题标签 [core-graphics]

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 回答
834 浏览

iphone - Xcode CGRectZero 错误

编译代码时出现以下错误

构建失败(1 个错误)

有人可以告诉我解决这个问题的方法吗?

0 投票
6 回答
59044 浏览

iphone - 从 UIColor 中提取 rgb

以前见过这个问题,但我的例子似乎不起作用。

使用 GDB 查看该数组是空的。有什么提示吗?

0 投票
1 回答
714 浏览

iphone - 重叠和接触的 CoreGraphics 矩形有 0.5px 的边框

当靠近、接触或重叠时,我的核心图形填充表现得很奇怪。此问题在 iPhone Simulator 和 iPhone OS 2.2 上。

这里我们有两个标签和一个带有两个 CGContextFillRect() 的自定义视图:

重叠问题

当蓝色和红色结合在一起时,它们会形成这条令人讨厌的 0.5px 合并线。我似乎无法摆脱它,甚至无法改变它的颜色。

这个版本的矩形之间有 1px 的间隙,当然它是用黑色背景填充的:

像素间隙

我试过禁用抗锯齿,但这并不能解决问题。

}

有任何想法吗?

0 投票
6 回答
8296 浏览

iphone - 如何获得 CGPath 曲线或四边形曲线中的所有点

我使用该方法制作了一条四边形曲线路径CGPathAddQuadCurveToPoint。我得到了完美的路径。但是,我想知道参与路径的所有坐标点。

有没有办法检索路径中的所有坐标点?

如果没有,您是否有任何其他解决方案可以在数学上检索曲线中的所有点。

在此先感谢, Vamshi

0 投票
4 回答
6888 浏览

iphone - size_t 持有什么样的数据?

在代码片段中,我看到了这个:

文档没有给我任何关于“size_t”的有用信息。有谁知道这是什么?

0 投票
1 回答
784 浏览

iphone - 如何找出一个像素在 CGImageRef 中有多少字节?

该文档提到了一个 CGBitmapContextGetBitsPerPixel()。我几乎可以肯定,我只需要将它除以 8。

但是由于我没有学习计算机科学,所以我对细节感到困惑。如果它是 8 位 PNG 或 24 位 PNG 会有所不同吗?还是其他的PNG?

因此,为了安全地获取 CGContextRef 的每个像素的字节数,我是否只需除以 8?

0 投票
2 回答
4461 浏览

iphone - 如何在 iPhone OS 中从 PNG 图像中获取干净的 alpha 通道信息?

我创建了这样的上下文(简化):

现在,当我尝试使用 Alphatransparency 提取 PNG 中第一个像素的数据时,它具有非常奇怪的 alpha 值。我有一个简单的PNG,它是一个正方形。在每个边缘上,我切断了 10x10 像素并使它们完全透明。Alpha 不应该是像 153 这样的东西。

在 CGImage.h 中声明了一个 kCGImageAlphaOnly。医生说:

kCGImageAlphaOnly 没有颜色数据,只有一个 alpha 通道。

好的,这听起来不错,因为我只需要 Alpha 数据,不需要其他任何东西。但这在我的脑海中提出了一些问号。如果我确实拥有一个带有一堆颜色 + alpha 的设备齐全的 PNG:这个常数会确保我的 PNG 被转换为匹配该颜色空间吗?或者我是否必须提供与指定颜色空间匹配的 PNG?

编辑:我尝试使用 kCGImageAlphaOnly,但出现此错误:

这里可能有什么问题?我之前指定了这个:

编辑:我一分钟前一直在读这个:

添加到 XCode 的 PNG 在编译期间由“pngcrush”优化。这会进行一些字节交换(从 RGBA 到 BRGA)和 alpha 的预乘。

我认为 alpha 的这种预乘会带来麻烦。

编辑:在 pngcrunch 对 PNG 进行字节交换之后,alpha 通道保持不变。因为我不关心颜色,只关心 alpha,所以我认为预乘应该不是一个太大的问题。

我的 PNG 在我将它们添加到 Xcode 之前是 24 位 PNG。

0 投票
1 回答
1942 浏览

iphone - 对于具有 alphatransparency 的 pngcrunch 优化的 24 位 PNG 文件,我必须为每个组件指定多少位?

CGBitmapContextCreate 接受一个对我来说不是很明显的参数:

例如,对于 32 位像素格式和 RGB 颜色空间,您将指定每个组件 8 位的值。

我创建了具有 alphatransparency 的 24 位 PNG 文件,并将它们添加到 Xcode。在编译时,Xcode 使用 pngcrunch 优化那些 PNG 切片。

因此,当尝试在 iPhone-OS 上从此类图像文件中创建图形上下文时,我需要指定每个组件的位。

在这种情况下,我会说它们是每个组件 4 位,尽管我不知道 alpha 是否算作一个组件。

0 投票
1 回答
3911 浏览

iphone - CGContextRef 中的坐标系是什么样的?

我假设原点在左下角,y轴从0开始向上扩展。x轴从0开始向右扩展。

我只是问,因为我从我的绘图代码中得到了非常奇怪的结果......想确保我没有弄错这部分。

0 投票
3 回答
1771 浏览

iphone - 理论上:alpha 分量是如何在 iPhone OS 中预乘到 PNG 的其他分量中的,如何正确地取消预乘?

实际上,我认为有一种简单的方法可以实现这一目标。我需要的是纯 alpha 值信息。为了进行测试,我有一个 50 x 55 像素的 PNG,其中每条边上都有一个 5x5 像素的矩形是完全透明的。在这些区域中,alpha 必须为 0。其他任何地方都必须为 255。我非常确定我的 PNG 是正确创建的,而且它看起来也正确。

请告诉我这在理论上是否正确:我创建了一个只有 alpha 通道而没有其他内容的 CGImageRef。这是使用 CGBitmapContextCreate 和 kCGImageAlphaOnly 作为参数完成的。CGBitmapContextGetBitsPerPixel(context) 返回 1,因此它表明我确实每个像素只有一个组件:所需的 alpha 值。我一直在阅读 CGBitmapContextCreate 将处理从给定图像到新创建的上下文的所有转换。我的图像以前是具有透明度的 PNG-24,但来自 Xcode 的 pngcrunch 似乎以某种方式转换它们。

所以,就理论上而言:此时我是否有机会获得正确的、未预乘的 alpha?我得到的值似乎几乎匹配,但在一个 5x5 的大透明正方形中,我得到的值是 19、197、210、0、0、0、98 等。如果它们是真的,我将不得不从图像中看到一些东西。图像本身是纯蓝色的。