我正在尝试为我的图形代码程序添加橙色。我使用putpixel(int x,int y,int color)函数来添加颜色。这个功能不允许我这样做。这是我的代码,请帮我解决这个问题
#include<iostream>
#include<graphics.h>
int main()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,NULL);
int height,width;
height=10;
width=75;
while(height!=43)
{
putpixel(width,height,12); //here i want to add orange color
width++;
if(width==225)
{
width=76;
height++;
}
}
getch();
closegraph();
}
我正在努力建立一面印度国旗。我正在使用GNU lib libgraph 1.0.2
答案 0 :(得分:0)
代码看起来像 BGI ( MS-DOS 的古老Borland图形界面),这意味着要么模拟 BGI ,要么模仿模拟强> MS-DOS 即可。此外,它通常只使用16种颜色模式,因此您只能获得标准 EGA / VGA 调色板颜色的16个索引。如果您使用256种颜色,则可以使用标准的 VGA 调色板。
在这一行:
putpixel(width,height,12);
数字12是使用的颜色,因此您需要找到您想要的橙色数字。您可以通过渲染整个调色板来实现:
for (x=0;x<16<<2;x++)
for (y=0;y<16;y++)
putpixel(x,y,x>>2);
并从零开始计算从左开始的索引(在更多行中使用256种颜色,这样你仍然可以计算颜色......)你也可以使用这个
从上面的链接拍摄图片:
这些数字是十六进制的,所以12 = 0x0C
是红色的。如果您的输出颜色与您获得相同的调色板相似...如果不是这意味着您有不同的调色板(可能是Linux或WEB调色板)
此处还有来自同一链接的标准 VGA 256调色板:
如果不存在所需的颜色,则需要重新定义可由accessing VGA I/O (reading palette)完成的调色板,但如果没有IO权限访问,则无法在Windows或Linux下完成。可能你的gfx lib有一些功能在做/模仿它....
另一种方法是使用dithering,这样你就可以拍摄红色和黄色并混合它们(有些像素是红色的,附近有些黄色)。
PS 使用put pixel soo slooow 您可以直接使用 BGI 渲染填充的矩形。它支持基本的几何形状,更多的只是看到 BGI 文档,其中有很多。我当时并不喜欢 BGI 并且根本没有使用它,因为直接 VGA / VESA VRAM 访问在任何方面都更快更好。现在使用/学习它是愚蠢的(除非你被学校强迫它)。有很多选择见:
如果您在该链接中看到gfxinit()
功能,则可以使用例程更改256色 VGA 调色板。