====== Linien zeichnen ====== Grundsätzlich bietet NCurses die Möglichkeit einfache Linien zu zeichnen, allerdings handelt es sich nur um horizontale und vertikale Linien. Für ideale Linien, die beliebig über den Bildschirm laufen, empfielt es sich, eine eigene Implementation des [[algo:bresenham|Bresenham-Algorithmus]] zu verwenden. ===== Auf dem Hauptfenster zeichnen ===== Die einfachsten Funktionen hierfür sind [[gui:ncurses:lib:hline()]] und [[gui:ncurses:lib:vline()]]. Hier wird einfach das Zeichen angegeben und die Länge der Linie in Zeichen: Die Zeile hline( ACS_HLINE, 5 ) erzeugt eine horizontale Linie, bestehend aus 5 horizontalen Linienabschnitten ('─'). Hiermit lassen sich auch Bereiche löschen, in dem Leerzeichen verwendet werden, oder es lässt sich ein Fortschrittsbalken oder horizontaler Scrollbalken beispielsweise mit dem '#'-Zeichen darstellen. Ein vertikaler Scrollbalken ließe sich also beispeilsweise mit folgender Zeile erzeugen: vline( '#', 5 ) Hierbei ist zu beachten, dass beide Funktionen an der Stelle beginnen, wo der Cursor gerade steht. hline() zeichnet dabei von links nach rechts und vline von oben nach unten. Beide Funktionen zeichnen nicht über das Fenster hinaus. ==== Auf eigene Fenster zeichnen ==== Um in ein bestimmtes Fenster zu zeichnen, gibt es auch hier die entsprechenden Funktionen mit dem 'w'-Präfix: [[gui:ncurses:lib:whline()]] und [[gui:ncurses:lib:wvline()]]. ===== An einer festgelegten Position zeichnen ===== Statt den Cursor mit der [[gui:ncurses:lib:move()]], bzw. [[gui:ncurses:lib:wmove()]]-Funktion erst an die passende Stelle zu rücken gibt es die Varianten [[gui:ncurses:lib:mvhline()]] und [[gui:ncurses:lib:mvvline()]]. Natürlich sind die wichtigsten Funktionen mit dem meisten Präfixen, die den Cursor eines eigenen Fensters setzen und dann die Linien zeichnen und damit auch die kryptischsten: [[gui:ncurses:lib:mvwhline()]] und [[gui:ncurses:lib:mvwvline()]].