You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于GNU libgraph 1.0.2,putpixel函数添加自定义橙色的技术求助

解决libgraph中putpixel自定义橙色的问题

嘿,我来帮你搞定这个自定义橙色的问题!你现在遇到的问题是因为libgraph(基于BGI图形库)的默认颜色索引里,12对应的是亮红色,不是你想要的印度国旗藏橙色。要使用自定义颜色,我们需要通过setrgbpalette()函数来修改调色板中对应索引的RGB值。

关键知识点

libgraph的默认16色调色板里,颜色索引对应的预设值是固定的(比如12=亮红、14=黄色),如果要使用自定义颜色,必须先调用setrgbpalette(int color_index, int red, int green, int blue)来指定对应索引的RGB分量。印度国旗的标准藏橙色(Saffron)对应的RGB值是(255, 153, 51)。

修改后的完整代码

#include<iostream>
#include<graphics.h>
int main() {
    int gd=DETECT,gm;
    initgraph(&gd,&gm,NULL);
    
    // 将颜色索引12设置为印度国旗的标准藏橙色
    setrgbpalette(12, 255, 153, 51);
    
    int height,width;
    height=10;
    width=75;
    while(height!=43) {
        putpixel(width,height,12); // 现在这个索引对应的就是自定义橙色了
        width++;
        if(width==225) {
            width=76;
            height++;
        }
    }
    getch();
    closegraph();
}

额外说明

  1. 调色板索引选择:如果不想覆盖默认的颜色索引(比如12原本是亮红),你可以选择当前图形模式支持的其他索引。可以用getmaxcolor()函数获取当前模式下的最大可用颜色索引,确保选择的索引在范围内。
  2. 后续扩展:如果你要继续绘制印度国旗的白色和绿色部分,可以用同样的方法设置对应的颜色:
    • 白色:默认索引15就是(255,255,255),无需修改
    • 印度国旗标准绿色:setrgbpalette(2, 0, 128, 0)
  3. 循环优化:你当前的while循环可以改成更直观的双重for循环,代码可读性更高:
    for(int h = 10; h < 43; h++){
        for(int w = 75; w < 225; w++){
            putpixel(w, h, 12);
        }
    }
    

内容的提问来源于stack exchange,提问作者Nikhil Padole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:26:03