这个文字颜色有什么问题?

时间:2012-06-19 18:24:05

标签: c++ openframeworks

我正在使用openFrameworks ofxPango插件来渲染文本,其中包含以下代码:

ofxPango* pango;
ofxPCContext* context;
ofxPCPangoLayout* layout;
ofImage text_image;

pango = new ofxPango();
context = pango->createContextWithSurface(width, height);
context->color4f(1,1,1, 0.0f);
context->paint();

layout = context->createPangoLayout();
layout->setText(text);
layout->setTextColor(186,34,29, 1.0f);
layout->setWidth(width);
layout->setJustify(true);
//context->paint();

ofxPCPangoFontDescription* fd = new ofxPCPangoFontDescription();
fd->createFromString(font);
    layout->setFontDescription(*fd);
    layout->show();

text_image.allocate(context->getSurface()->getWidth(), context->getSurface()->getHeight(), OF_IMAGE_COLOR_ALPHA);
text_image.setFromPixels(context->getSurface()->getPixels(), text_image.width, text_image.height, OF_IMAGE_COLOR_ALPHA, true);

我无法理解layout->setTextColor(r,g,b,a)的工作原理。 如果我跑:

  • 0,0,0,1 - 文字为黑色,因为它应该是
  • 255,0,0 - 文字为红色,因为它应该是
  • 186,34,29,1 - 文字显得非常浅灰色(可能是白色)应该是红色
  • 186,34,0,1 - 文字为黄色,但应为红色

为什么这些颜色出错?

1 个答案:

答案 0 :(得分:1)

我认为颜色值应该在0.0f和1.0f的范围内,其中:

  • 0.0f =无颜色
  • 0.5f =半色
  • 1.0f =全彩

以下是Cairo library中的一些简略示例,其中ofxPango呼吁:

color_white
    1.0, 1.0, 1.0, 1.0

color_black
    0.0, 0.0, 0.0, 1.0

color_transparent
    0.0, 0.0, 0.0, 0.0

color_magenta
    1.0, 0.0, 1.0, 1.0