【问题标题】:8 bit color in iPhoneiPhone 中的 8 位颜色
【发布时间】:2012-03-06 17:03:26
【问题描述】:

我正在使用 ANSI 转义序列,但我在颜色方面遇到了困难。

我已经尝试过使用维基百科的 ANSI entry 中的几个调色板,但结果总是一样。我用

创建颜色
[UIColor colorWithRed: green: blue: alpha];

结果与假定的颜色无关(我将它们中的每一个除以 256),它们中的大多数最终都相同。我相信 UIColor 是不够的,我应该使用 CGColorRef 来进行翻译。有什么建议吗?

上面的颜色是“常规颜色”,下面的颜色应该是较亮的八种颜色,但一切都搞砸了。

这就是我创建颜色的方式:

+ (UIColor *) cyanANSIColor
{
    return [UIColor colorWithRed:51.0f/256.0f 
                             green:187.0f/256.0f
                             blue:200.0f/256.0f
                             alpha:1.00f];
}

+ (UIColor *) brightCyanANSIColor
{
    return [UIColor colorWithRed:85.0f/256.0f
                             green:255.0f/256.0f
                             blue:255.0f/256.0f
                             alpha:1.00f];
}

我通过它将它们分配给每个视图

backgroundColor

属性。你可以看到青色是错误的(其中一种),而且大部分看起来都一样。深灰色显示蓝色。而且没有一个是 int。

【问题讨论】:

  • UIColor 和 CGColorRef 的颜色值是从 0 到 1,而不是从 0 到 255。您是否尝试过除以 255?
  • 那个方法行得通,还有其他问题。贴一些代码?截图?
  • 你写的是127.0/255还是127/255?后者总是给出 0。
  • 您可能正在除以 2 个整数。尝试强制浮点除法。
  • 您能否包含将其设置为特定视图的代码,包括您的 UIColor 方法,然后放置您获得的结果的图像,以及您期望的颜色(如果可能)?目前没有什么可做的,如果你的数字是正确的,它应该可以工作(除了除以 255,而不是 256)并且你的问题在其他地方。

标签: iphone objective-c ansi


【解决方案1】:

这是我手动将两个视图的颜色设置为问题中指定的值时得到的结果:

我的“正常”青色 (51,187,200) 位于顶部,而明亮的 (85,255,255) 位于底部。但是根据颜色的外观,我的顶部颜色与您的底部颜色相匹配。是否有可能您没有在正确的位置绘制样本,因此看到了青色视图的背景?其他样本也同样画错了吗?

【讨论】:

    【解决方案2】:

    你需要除以 255,而不是 256:

    + (UIColor *) cyanANSIColor
    {
        return [UIColor colorWithRed:51.0f / 255.0f 
                               green:187.0f / 255.0f
                                blue:200.0f / 255.0f
                               alpha:1];
    } 
    

    【讨论】:

    • 感谢您指出这一点,但这没有任何区别。我仍然有这个问题。
    • 虽然正确,但这不会对结果产生巨大的影响。 51 / 255 与 51 / 256 差别不大
    【解决方案3】:

    您是否尝试过使用 Quartz 或 OpenGL 将每种颜色渲染到 CGBitmapImageRep 或 OpenGL ES 视图的子矩形而不是使用视图的背景色?如果您不对正在使用的视图进行子类化,则无法知道可能正在进行的其他绘图会影响每个视图的颜色。

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 2016-10-09
      • 2013-01-24
      • 1970-01-01
      • 2015-05-21
      • 2011-06-01
      相关资源
      最近更新 更多