Buchstaben "gezielt" in Konsole ausgeben
-
Hi,
ich habe vor ein Programm zu schreiben das zu einer Funktion einen Graph erstellt.
Ich hab mir das so gedacht das viele kleine Punkte so etwas wie eine Line ergeben.
Nun habe ich gegooglet und Folgendes gefunden.void gotoxy(short x, short y) { HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x + 1; pos.Y = y + 1; SetConsoleCursorPosition(hCon, pos); }Da hier nur shorts angenommen werden können schränkt das die Genauigkeit sehr ein.
Meine Frage ist nun ob es noch eine andere Möglichkeit gibt Punkte gezielt zu setzten (am besten etwas genaues :p ).
-
Auf was für einen Bildschirm willst du den Graph denn anzeigen, dass ein short zu klein ist?
-
short ist nicht zu klein sondern es nimmt keine Kommazahlen an.
-
Wozu auch? Bildpunkt 4589874785678E-7 gibt es nicht. Speicher deine Werte als Fließkommatypen und wandel sie zum Ausgeben auf dem Bildschirm in den korrekten Ganzzahlwert um.
Besitzt die Fläche auf der du ausgeben willst 100 Bildpunkte Vertikal und dein Wertebereich liegt bei beliebiger Genauigkeit (auch Kommastellen) beispielsweise zwischen 0 bis 100_000, teilst du zuerst durch 1000 und wandelst dann in short um. Dann kannst du den Wert als Parameter für Y verwenden.
-
du kannst auch pixelgenau reinmalen

HWND hWnd = GetConsoleWindow(); HDC hdc = GetDC(hWnd); SetPixel(hdc, 20, 20, RGB(255, 0, 0)); // und schon ist (20/20) rot ReleaseDC(hdc);ungetestet
-
malerei schrieb:
ungetestet
Jo! Und die nächste Ausgabe zerstört Deine Zeichnung...

-
dann halt ne "nachrichtenschleife" und eine membitmap
-
Dafür eignet sich die Konsole nicht. Man könnte durchaus in sie reinmalen, wie in alle anderen Fenster auch, aber ich würde da eher ein normales Windows Projekt machen, ein Fenster erzeugen und dann den Graphen zeichnen.
Das geht mit der GDI ganz gut:
http://msdn.microsoft.com/en-us/library/dd145203(VS.85).aspxOder aber auch GDI+, die das ganze noch in Klassen packt:
http://msdn.microsoft.com/en-us/library/ms533798(VS.85).aspx