【问题标题】:C program Vertical line not printing within window (Square)C程序垂直线不在窗口内打印(方形)
【发布时间】:2015-01-14 00:48:37
【问题描述】:

我目前有一个程序可以简单地在屏幕上绘制一个正方形,但是,我正在尝试向这个正方形添加垂直线,它确实打印到屏幕上,但不是它定义的全长,而不是广场之内。任何帮助将不胜感激!

#include <ncurses.h>

int main()
{
    initscr();
    mvvline(1,1,ACS_VLINE,10); //does not fully print to screen, and is printed outside of the square
    refresh();

    WINDOW *win = newwin(10,10,0,0);
    box(win, '|', '-');
    touchwin(win);
    wrefresh(win);

    getchar();
    endwin();
    return 0;
}

【问题讨论】:

  • 我不明白你的问题。你能添加你的预期输出吗?
  • 正方形定义为从原点 (0,0) 开始,我绘制的垂直线定义为从 (1,1) 开始,所以从数学上讲.. 垂直线应该是画在正方形中,但不是,它画在它的正下方。

标签: c window ncurses


【解决方案1】:

您需要mvwvline 而不是mvvline

mvwvline(win, 1, 1, '|', 10); // does print to screen

当然你必须在 win 变量初始化之后移动代码

int main()
{
    initscr();
    refresh();

    WINDOW *win = newwin(10, 10, 0, 0);
    box(win, '|', '-');
    mvwvline(win, 1, 1, '|', 10); //does not print to screen
    touchwin(win);
    wrefresh(win);

    getchar();
    endwin();
    return 0;
}

我不知道win 是否保证返回非NULL,但请查看文档,因为如果它可能返回NULL,您将有未定义的行为。

【讨论】:

  • 干杯!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多