在函数 putpixel(int x,int y,int color) 中添加用户定义的颜色
Adding user-defined color in function putpixel(int x,int y,int color)
我正在尝试将橙色添加到我的图形代码程序中。我正在使用 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
代码看起来像 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 种颜色,这样您仍然可以计算颜色......)您也可以使用此
从上面拍摄的图像link:
数字是十六进制的,所以 12 = 0x0C
是红色的。如果您的输出颜色与相同调色板的颜色相似...如果不是,则意味着您有不同的调色板(可能是 Linux 或 WEB 调色板)
这里还有来自相同 link:
的标准 VGA 256 调色板
如果想要的颜色不存在,您需要重新定义调色板,这可以通过 accessing VGA I/O (reading palette) 完成,但在没有 IO 权限访问的情况下 Windows 或 Linux 是不可能的。可能你的 gfx 库有一些功能 doing/emulating 它....
另一种方法是使用 ,这样你就可以把红色和黄色混合起来(有些像素附近是红色的,有些是黄色的)。
PS 使用 put 像素 soo slooow 你可以直接用 BGI[ 渲染填充的矩形=64=] 代替。它支持基本的几何形状,更多请参阅 BGI 文档,那里有很多。当时我不喜欢 BGI 并且根本没有使用它,因为直接 VGA/VESA VRAM 访问速度更快更好反正。 Using/learning 现在很傻(除非你被学校强迫)。有很多选择见:
- Graphics rendering in C/C++
如果您在 link 中看到 gfxinit()
函数,则有一个例程可以更改 256 色 VGA 调色板。
我正在尝试将橙色添加到我的图形代码程序中。我正在使用 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
代码看起来像 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 种颜色,这样您仍然可以计算颜色......)您也可以使用此
从上面拍摄的图像link:
数字是十六进制的,所以 12 = 0x0C
是红色的。如果您的输出颜色与相同调色板的颜色相似...如果不是,则意味着您有不同的调色板(可能是 Linux 或 WEB 调色板)
这里还有来自相同 link:
的标准 VGA 256 调色板如果想要的颜色不存在,您需要重新定义调色板,这可以通过 accessing VGA I/O (reading palette) 完成,但在没有 IO 权限访问的情况下 Windows 或 Linux 是不可能的。可能你的 gfx 库有一些功能 doing/emulating 它....
另一种方法是使用
PS 使用 put 像素 soo slooow 你可以直接用 BGI[ 渲染填充的矩形=64=] 代替。它支持基本的几何形状,更多请参阅 BGI 文档,那里有很多。当时我不喜欢 BGI 并且根本没有使用它,因为直接 VGA/VESA VRAM 访问速度更快更好反正。 Using/learning 现在很傻(除非你被学校强迫)。有很多选择见:
- Graphics rendering in C/C++
如果您在 link 中看到 gfxinit()
函数,则有一个例程可以更改 256 色 VGA 调色板。