【问题标题】:Drawing a color map with Core Graphics使用 Core Graphics 绘制彩色地图
【发布时间】:2011-04-14 15:01:11
【问题描述】:

我正在尝试弄清楚如何绘制这样的彩色地图:http://www.ritsplasman.com/images/colormap.png

我知道 Core Graphics 有两个处理渐变的函数:CGContextDrawLinearGradientCGContextDrawRadialGradient。径向渐变不是我想要的,所以我想我不得不使用另一个。但我无法仅使用线性渐变来完成示例图像。

颜色图基本上是一个渐变,其中色调水平变化而饱和度垂直变化。我怎样才能做到这一点?

【问题讨论】:

    标签: iphone objective-c cocoa-touch core-graphics cgcontext


    【解决方案1】:

    顾名思义,线性渐变只在一个轴上进行。从理论上讲,您可以将多个渐变叠加在一起以创建与该图像类似的效果,但我怀疑这将是解决该问题的一种非常有效的解决方案。我需要在我的一个 iOS 应用程序中使用类似的颜色图,我最终使用了该图像,因为它比尝试重新创建它更有效。

    【讨论】:

    • 应该可以使用 Core Graphics 绘制一次渐变,然后将其保存为我可以在我的应用程序中使用的 .png,这样它仍然有效。我只需要一种使用 CG 绘制它的方法,这样我就可以根据自己的意愿稍微修改它。
    • 您可以绘制到位图上下文,然后将其保存为 PNG 文件。
    • 是的,我已经知道如何绘制位图上下文并将其保存为文件,但我不知道如何实际绘制颜色图。 “在另一个之上堆叠多个渐变”的想法对我来说很有意义,但我真的不知道如何实现这些东西..(使用色调、饱和度等进行绘制)
    • 您需要在 rgb 中进行所有绘图,因此您必须对每个 HSV 值进行转换。您将使用 CGGradientCreateWithColorComponents 为沿 x 轴的所有颜色设置线性渐变,然后使用 CGContextDrawLinearGradient 绘制它,然后向下移动 y 轴并为图像中的第二个“行”创建下一个渐变。这将是一个棘手的过程,但希望这足以让您弄清楚如何开始。
    最近更新 更多