ncurses窗口的“阴影”

时间:2013-06-13 20:24:04

标签: c shadow ncurses

我正在学习ncurses,我遇到了“问题”。我可以在其中创建一个带有文本的窗口,我可以更改窗口的颜色和背景的颜色(stdscr)。我的问题是,我无法制作窗口的阴影(黑色ACS_BLOCKs)。我尝试了border()/wborder()函数,但它并没有达到我的预期。所以我想要这样的东西:

the Shadow is looking at you

1 个答案:

答案 0 :(得分:3)

更新:我自己想通了:

WINDOW *create_window(int y, int x, int width, int height, int color_id){
    WINDOW* win;
    int i;

    win = newwin(height, width, y, x);
    wbkgd(win, A_NORMAL | COLOR_PAIR(color_id) | ' ');

    /* start of shadow */
    attron(COLOR_PAIR(3));

    for(i = (x + 2); i < (x + width + 1); i++){
        move((y + height), i);
        addch(' ');
    }

    for(i = (y + 1); i < (y + height + 1); i++){
        move(i, (x + width));
        addch(' ');
        move(i, (x + width + 1));
        addch(' ');
    }
    attroff(COLOR_PAIR(3));
    /* end of shadow */

    refresh();

    return win;
}