Zeichnen?



  • Bitte verschiebt das nicht wieder ins Grafik-Forum! Kann man mit C++ in der Konsole zeichnen? Es geht mir nur um einzelne Punkte!
    Die Funktion SetPixel funktioniert ja auch, nur weiß ich nicht was ich als ersten Parameter also als HDC angeben soll...

    Ich habe das so gemacht:

    HDC hdc;
    SetPixel(hdc,0,0,RGB(255,255,255));



  • Hier ists falsch weil C++ keine Funktionen zum Zeichnen anbieten.

    Mit welchen Compiler Arbeitest Du ? Wäre was fürs MFC oder fürs WinAPI Forum ?!



  • Ich hab den MSVC++6 Compiler!
    Ich habe eine ganz normale Konsolenanwendung und will darin jetzt ein paar Punkte zeichnen! Geht das nicht?:(



  • Ich verscheibe den Thread mal ins WinAPI Forum.

    die können dir bestimt zu ein hdc heflen.



  • Konsole heisst deshalb Konsole, weil man darauf Zeichen einer Konsole (Tastatur) darstellen kann!!
    Sie wird auch nie was anderes können!

    [ Dieser Beitrag wurde am 06.11.2002 um 11:34 Uhr von RenéG editiert. ]



  • SetPixel() funktioniert in einer Konsolenanwendung nicht, wenn ich mich nicht sehr irre. Die Konsole kann keine Grafik darstellen(egal obs nur einzelne Pixel sind, oder nicht). Du kannst nur Zeichen ausgeben. Wenn es ein Pixel sein muß wäre ein Punkt " . " vielleicht ne Idee ?!



  • Original erstellt von crass:
    SetPixel() funktioniert in einer Konsolenanwendung nicht, wenn ich mich nicht sehr irre. Die Konsole kann keine Grafik darstellen(egal obs nur einzelne Pixel sind, oder nicht). Du kannst nur Zeichen ausgeben. Wenn es ein Pixel sein muß wäre ein Punkt " . " vielleicht ne Idee ?!

    Wie kann man einen Punkt an einer beliebigen Stelle ausgeben?
    btw: Wie machen die ganzen anderes Dos-Progs denn die Grafik?😕



  • Die Konsole ist jedenfalls ab den neueren Win-Versionen kein richtiges DOS mehr, sondern nur eine Simulation, die keine Grafik darstellen kann.

    Wie man die Koordinaten setzt, weiß ich nicht mehr genau, ich weiß nur daß es geht 😃 vielleicht sollte man den thread ins Konsolenforum verschieben...



  • Original erstellt von crass:
    Wie man die Koordinaten setzt, weiß ich nicht mehr genau, ich weiß nur daß es geht 😃 vielleicht sollte man den thread ins Konsolenforum verschieben...

    Wo der hin kommt ist mir eigentlich egal:D Hauptsache meine Frage wird beantwortet:D



  • ist sie doch schon: ES GEHT NICHT 😃
    Die andren "Dos-Programme" die zeichnen machen das auch nicht mit der Konsole...

    Das einzige was du machen könntest wäre mit Asciizeichen bilder zu malen aber naja.. ^^



  • Original erstellt von dreaddy:
    **Die andren "Dos-Programme" die zeichnen machen das auch nicht mit der Konsole...
    **

    Früher wurden Spiele nur für Dos programmiert, und Sie hatten ja wohl alle Grafik!:D Ich will doch einfach nur in einem Dos-Programm ein paar Pixel setzen - das kann doch nicht so schwer sein! 🙄



  • Okay. Hier gibts wohl missverständnisse.

    es gibt 2 Arten von programmen:
    1. DOS-Programme. Diese werden mit einem 16bit Compiler erstellt, die heutztage quasi nicht mehr gibt.
    2. Konsolenprogramme. Diese werden erstellt, wenn man ein "DOS" oder "Terminal" programm unter windows (z.B. mit vc++6) erstellt.

    Die 1. Programme können in die Konsole (oder eher Vollbild) zeichnen.
    Die 2. Programme können das nicht.

    Du kannst nur Konsolen (keine DOS) Programme erstellen. Es sei denn du lädst dir einen uralt Compiler runter.



  • mit Turbo C++ kannst du das zum Beispiel ganz gut machen, aber wenn du eh Windows benutzt wäre das quatsch, schon weil diese Grafiklibs unter Windoof eine miserable bis garkeine Unterstützung haben.



  • Die Windowslibs unterstützen viel mehr Grafikkarten und Features als die DOS-Äquivalente. 😃

    Mit uralt meinte ich z.B. sowas wie den Turbo C++. Aber das macht wirklich keinen Spaß damit was zu programmieren.



  • @BF_31
    Aha. Der Britney-Fan. 😉 Die einzige Möglichkeit, die du hast, ist, auf dem Fenster direkt herumzuzeichnen. Wenn es deine eigene Konsole ist, dann müsstest du auch eine neue WindowProc für das Fenster setzen können, so dass du WM_PAINT und so abfangen kannst.



  • Dann würde ich aber keinen solchen Umstand machen, sondern einfach gleich eine richtige Windowsanwendung (keine Konsole) erstellen. 🙂



  • also... mit den neueren compilern wird es nicht gehen... aber wenn du noch einen alten hast dann geht das (z.b borland c++ 4.52). hier ein kleines beispiel :

    #include <graphics.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>
    
    #define PIXEL_COUNT 1000
    #define DELAY_TIME  100
    
    int main(void){
       int gdriver = DETECT, gmode, errorcode;
       int i, x, y, color, maxx, maxy, maxcolor, seed;
       ini1tgraph(&gdriver, &gmode, "");
       errorcode = graphresult();
       if (errorcode != grOk) {
          printf("Graphics error: %s\n", grapherrormsg(errorcode));
          printf("Press any key to halt:");
          getch();
          exit(1);
       }
       maxx = getmaxx() + 1;
       maxy = getmaxy() + 1;
       maxcolor = getmaxcolor() + 1;
       while (!kbhit()) {
          seed = random(32767);
          srand(seed);
          for (i=0; i<PIXEL_COUNT; i++) {
             x = random(maxx);
             y = random(maxy);
             color = random(maxcolor);
             putpixel(x, y, color);
          }
          delay(DELAY_TIME);
          srand(seed);
          for (i=0; i<PIXEL_COUNT; i++) {
          x = random(maxx);
          y = random(maxy);
          color = random(maxcolor);
          if (color == getpixel(x, y))
             putpixel(x, y, 0);
          }
       }
       getch();
       closegraph();
       return 0;
    }
    
    // in der <graphics.h> sind alle funktionen die dir weiter helfen...
    

    [ Dieser Beitrag wurde am 11.11.2002 um 14:39 Uhr von cd9000 editiert. ]



  • kleiner fehler (11 zeile code) ini1tgraph() => initgraph()



  • Mit Code-Tags könnte man den Code auch fast lesen 😉



  • Mit Code-Tags könnte man den Code auch fast lesen

    die darstellung hier ist aber nicht mein problem...


Anmelden zum Antworten