Struct Pixel颜色值

时间:2017-10-09 12:48:55

标签: c++ rgb pixel

我已经定义了一个结构

struct Pixel { uint8_t r, g, b; };

我有一个功能

void setPixel(int x, int y, const Pixel& color);

我必须为setPixel()函数输入什么颜色值才能使其正常工作?我不知道应该如何定义它。

我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

查看为您要调用的函数提供的原型。

void setPixel(int x, int y, const Pixel& color);

观察:

  • 它需要x的一个参数,一个int
  • 它需要y的一个参数,一个int
  • 它需要color的一个参数,Pixel
    它碰巧是一个参考参数,但这并不是立即相关的

首先,任何超过三个参数的调用都无效。

其次,您需要提供正确类型的三个参数,前两个类型为int,可以是r值。您的xy可能没问题,如果它们是int,就像在

中一样
int x = 5;
int y = 5;

然而,这可能有点令人困惑,在您要调用的函数内外使用相同的名称。所以我建议

int outsideX = 5;
int outsideY = 5;

作为参考参数的第三个参数需要类型为Pixel的实际(常量)变量。你需要设置一个。

Pixel outsideColor;
outsideColor.r = 255;
outsideColor.g = 0;
outsideColor.b = 255;
// this will be bright magenta

完成这些准备后,您可以将该功能称为

setPixel(outsideX, outsideY, outsideColor);

答案 1 :(得分:0)

您只需正确构建Pixel,例如,您可以使用聚合初始化或手动构建:

struct Pixel { uint8_t r, g, b; };

void setPixel(int x, int y, const Pixel& color) {
  std::cout << "Setting " << x << " " << y << " to: " << (unsigned)color.r << " " << (unsigned)color.g << " " << (unsigned)color.b << std::endl;
}

int main() {
  // Using aggregate init
  setPixel(1, 1, { 255, 255, 255 });

  // Manually
  Pixel pix;
  pix.r = 255;
  pix.g = 255;
  pix.b = 255;
  setPixel(1, 1, pix);
}

答案 2 :(得分:0)

显然,没有任何功能可以将颜色视为三个不同的参数。

相反,你必须使用以结构为参数的函数。这很容易,如

setPixel(some_x, some_y, { some_r, some_g, some_b });

变量定义并初始化为某些值或直接值。