0

在我的应用程序中,我使用 conio 库中的函数 textbackground() 。我有 16 种可用颜色:

#define BLACK 0
#define BLUE 1
#define GREEN 2
#define CYAN 3
#define RED 4
#define MAGENTA 5
#define BROWN 6
#define LIGHTGRAY 7
#define DARKGRAY 8
#define LIGHTBLUE 9
#define LIGHTGREEN 10
#define LIGHTCYAN 11
#define LIGHTRED 12
#define LIGHTMAGENTA 13
#define YELLOW 14
#define WHITE 15

如何将这些颜色转换为十六进制代码和 RGB,或者只是在哪里可以找到这些颜色的 RGB/十六进制代码(我有一个 int 2D 数组,其中单元格的值从 0 到 15,这些值代表像素颜色。现在我需要保存为 BMP 和 XPM2 格式)。

4

2 回答 2

1

这些是 EGA/VGA 颜色,对吧?

这里的问题是,EGA 确实每种颜色有 2 位,而 VGA+ 最多有 8 位。实际值有所不同。但是这种颜色应该没问题:

idx 0xrrggbb:
  0 0x000000
  1 0x0000aa
  2 0x00aa00
  3 0x00aaaa
  4 0xaa0000
  5 0xaa00aa
  6 0xaaaa00 // Windows (dark yellow)
  6 0xaa5500 // EGA/VGA (brown)
  7 0xaaaaaa
  8 0x555555
  9 0x5555ff
 10 0x55ff55
 11 0x55ffff
 12 0xff5555
 13 0xff55ff
 14 0xffff55
 15 0xffffff
于 2016-11-27T18:52:46.517 回答
0

最简单但不是最好的解决方案是根据像素值进行 switch() 并通过从 color-hex.com 之类的页面对其进行硬编码来将其设置为正确的 hex/rgb 值 你可以在那里找到所有流行的颜色表示.

于 2016-11-27T18:55:33.620 回答