清除屏幕后添加额外空间

时间:2015-12-27 17:05:29

标签: c ansi-escape

我有以下代码:

if($tip_dente == 2){
    for($i=0; $i<=7; $i++){
        if(in_array($array_p1n[$i], $array_denti_new)){
            $pdf->Cell(0.5,1,$pdf->Image($array_p1[$i],$pdf->GetX(),$pdf->GetY(),0,1,'PNG'),1,C,1,false); // larghezza, altezza, txt, bordi, linea a capo, allineamento orizzontale, riempimento colore, ignorare
            $pdf->Cell(0.2,1,'',0,0,C,false);
        }else{
            $pdf->Cell(0.5,1,$pdf->Image($array_p1[$i],$pdf->GetX(),$pdf->GetY(),0,1,'PNG'),0,C,1,false); // larghezza, altezza, txt, bordi, linea a capo, allineamento orizzontale, riempimento colore, ignorare
            $pdf->Cell(0.2,1,'',0,0,C,false);
        }
    }
}

除了一件事,一切都很美妙。第一行似乎添加了额外的空间:

extra space

如何摆脱这个额外空间?

3 个答案:

答案 0 :(得分:1)

虽然我无法使用我的系统上的控制代码进行测试,但在此文本之后您很可能需要\n

printf(Y "\n\n\"IT'S PEANUT BUTTER JELLY TIME\"\n" D);

至少,这在Windows系统上解决了同样的问题(YD似乎是颜色控制代码,所以这不应该影响位置。< / p>

<强>更新

似乎也存在position control code(虽然不能在这里测试):

#define     GOTOYX   "\x1B[%.2d;%.2dH"
    Set cursor to (y, x). More...

因此,您可以使用此代码来定位第一行而不是额外的换行符。

答案 1 :(得分:0)

尝试在第一行之前插入\n字符。

答案 2 :(得分:0)

我;在ubuntu linux 14.04上使用gcc进行编译。

以下代码可以干净地编译并执行所需的操作。

我无法使\1b[2j(清晰屏幕)工作,并发现我不需要它。

一些重大变化是

  1. \n结束每个图形的最后一行,因此最后一行始终立即输出
  2. 将图形修改为全部宽度和高度相同
  3. if(true)语句修改为在彩色和纯文本输出之间交替
  4. 删除了对fflush()
  5. 的不必要的调用
  6. 图形第一行的错误偏移的原因是没有使用正确的间距来允许图形中一行开头的w而不输出整个图形输出而不是全部图形具有相同的高度/宽度。
  7. 以下代码是结果

    #define _GNU_SOURCE
    #include <stdio.h>
    #include <unistd.h>
    #include <stdbool.h>
    
    #define D "\x1b[0m"
    #define Y "\x1b[33;1m"
    #define W "\x1b[37;1m"
    #define B "\x1b[30;1m"
    #define CURSOR_1_1 "\x1b[1;1f \n"
    
    void printLeft(bool color)
    {
      if (color) {
        printf(CURSOR_1_1
               Y
               "               __                               \n"
               "              /  |                              \n"
               "             /   \\                             \n"
               "            /     |                             \n"
               W
               "      _\\|  " Y "|" W "[" B "*" W "][" B "*" W "]" Y "|  " W "|/_\n"
               "        \\  " Y "|      |  " W "/               \n"
               "         --" Y "|" W "\\____/" Y "|" W "--      \n"
               Y
               "           \\      |                            \n"
               "            \\     /                            \n"
               "             \\   |                             \n"
               W
               "             |" Y "\\__|" W "|                  \n"
               "             |    |                             \n"
               "           ==|    |=                            \n");
      } else {
        printf(CURSOR_1_1
               "               __                               \n"
               "              /  |                              \n"
               "             /   \\                             \n"
               "            /     |                             \n"
               "      _\\|  |[*][*]|  |/_                       \n"
               "        \\  |      |  /                         \n"
               "         --|\\____/|--                          \n"
               "           \\      |                            \n"
               "            \\     /                            \n"
               "             \\   |                             \n"
               "             |\\__||                            \n"
               "             |    |                             \n"
               "           ==|    |==                           \n");
      }
    }
    
    void printRight(bool color) {
      if (color) {
        printf(CURSOR_1_1
               Y
               "               __                               \n"
               "              |  \\                             \n"
               "              /   \\                            \n"
               "             |     \\                           \n"
               W
               "        _\\|  " Y "|" W "[" B "*" W "][" B "*" W "]" Y "|  " W "|/_        \n"
               "          \\  " Y "|      |  " W "/             \n"
               "           --" Y "|" W "\\____/" Y "|" W "--    \n"
               Y
               "             |      /                           \n"
               "             \\     /                           \n"
               "              |   /                             \n"
               W
               "             |" Y "|__/" W "|                   \n"
               "             |    |                             \n"
               "           ==|    |==                           \n");
      } else {
        printf(CURSOR_1_1
               "               __                               \n"
               "              |  \\                             \n"
               "              /   \\                            \n"
               "             |     \\                           \n"
               "        _\\|  |[*][*]|  |/_                     \n"
               "          \\  |      |  /                       \n"
               "           --|\\____/|--                        \n"
               "             |      /                           \n"
               "             \\     /                           \n"
               "              |   /                             \n"
               "             ||__/|                             \n"
               "             |    |                             \n"
               "           ==|    |==                           \n");
      }
    }
    
    void printBottom(bool color) {
      if (color) {
        printf(CURSOR_1_1
               Y
               "               __                               \n"
               "              |  |                              \n"
               "             /    \\                            \n"
               "            |      |                            \n"
               "            |" W "[" B "*" W "][" B "*" W "]" Y"|         \n"
               "            |      |                            \n"
               W
               "        _\\| " Y "|" W "\\____/" Y "| " W "|/_  \n"
               "          \\/" Y "|      |" W "\\/              \n"
               Y
               "            |      |                            \n"
               W
               "           /\\" Y "\\    /" W "/\\              \n"
               "        ==/   " Y "|__|   " W "\\==             \n"
               "                                                \n"
               "                                                \n");
      } else {
        printf(CURSOR_1_1
               "               __                               \n"
               "              |  |                              \n"
               "             /    \\                            \n"
               "            |      |                            \n"
               "            |[*][*]|                            \n"
               "            |      |                            \n"
               "        _\\| |\\____/| |/_                      \n"
               "          \\/|      |\\/                        \n"
               "            |      |                            \n"
               "           /\\\\    //\\                        \n"
               "        ==/   |__|   \\==                       \n"
               "                                                \n"
               "                                                \n");
      }
    }
    
    int main( void )
    {
        int counter = 0;
        printf(CURSOR_1_1);
        while (1)
        {
            if (counter == 0) printLeft(true);
            else if (counter == 2) printRight(true);
            else printBottom(true);
    
            if (counter&0x01)
            {
              printf(Y "\n\n\"IT'S PEANUT BUTTER JELLY TIME\"%s\n", D );
            }
    
            else
            {
              printf("\n\n\"IT'S PEANUT BUTTER JELLY TIME\"\n");
            }
            //fflush(stdout);
            usleep(200000);
            counter = (counter + 1) % 4;
        }
        return 0;
    }