Grafik programmieren



  • Hi!

    Ich benötige für ein neues Projekt von mir Kenntnis zum erstellen einer Grafik in C++.

    Ich nutze den Borland C++ Builder.

    Ich hab eine VCL-Anwendung erstellt mit verschiedenen Buttons um halt die Steuerung zu erstellen und wollte dann dynamisch ein Bild mit dem jeweiligen Content erzeugen.

    Es sollen nur einfache Linine, Rechtecke und Schrift (in unterschiedlichen Farben) erstellt werden und auf die Form als eine Grafik gebracht werden!

    Wie kann ich das am besten bewerkstelligen??
    Danke vielmals.

    MfG Puccini



  • Hallo

    Pack ein TImage/TPaintBox auf die Form und schau dir die Methoden an die deren Eigenschaft Canvas bietet.

    bis bald
    akari



  • Ein TImage hab ich schon drauf.

    Auf die Methoden hatte ich noch net geachtet, da ich dachte, das ich erst die Grafikressource für das Image erzeugen müsste um es dann zu benutzen.

    Werd ich morgen mal schaun!

    Hättest du eventuelle noch ein paar einsteiger tips in das Gebiet der Grafik?
    👍



  • Hallo

    Eine Grafikresource brauchst du erst dann wenn du auf dem TImage ein bestehendes Bitmap darstellen willst. Da du laut deiner Beschreibung aber die Darstellung komplett selber erstellen willst ("Es sollen nur einfache Linine, Rechtecke und Schrift (in unterschiedlichen Farben) erstellt werden") reichen die Methoden von TCanvas.

    Weitere Tips sind eigentlich nicht nötig, da du damit schon die grundlegensten Grafikoperation kennen lernst. Schau dir einfach in aller Ruhe die verfügbaren Methoden von TCanvas an. Da findest du alles nötige, von einzelnen Pixeloperation über Linien bis hin zu Rechtecken, Kreisen und Schriften. Auch die jeweiligen Beispiele dort sind aufschlußreich.

    bis bald
    akari



  • vielen herzlichen dank 😃
    das werd ich machen.

    Ich war halt verwirrt durch meine suche, da dort immer was mit der ressource stand.

    🕶

    Werd bei eventuellen Fragen gern wieder hier posten



  • So, malen geht, jetzt gehts weiter 😃

    Wie bestimme ich die Linienfarbe und den Style?

    Woher soll man die Bezeichnungen für den Style wissen?
    PS_DOT ??
    Ich brauch gestrichelte und durchgezogene Linien.
    Und auch die Farbe muss ich verändern können.
    So hab ichs bisher probiert:

    TPen *Pen = new TPen();
    	Pen->Color = Farbe;
    	Pen->Style = PS_DOT;
    	//Hier werden die Linien aufs Papier gebracht
    	Img_Stat->Canvas->MoveTo( X1, Y1);
    	Img_Stat->Canvas->LineTo( X2, Y2);
    

    Farbe ist eine TColor und wird als clGreen übergeben, jedoch wird die linie immernoch schwarz.. sie ist auch net gestrichelt :<

    Danke für eure Hilfe



  • mit

    TPen *Pen = new TPen();
    

    erstellst du einen neuen Pen und veränderst nicht dem vom Img_Stat

    also

    Img_Stat->Canvas->Pen->Color = Farbe;
    Img_Stat->Canvas->Pen->Style = PS_DOT;
    
    //Hier werden die Linien aufs Papier gebracht
    Img_Stat->Canvas->MoveTo( X1, Y1);
    Img_Stat->Canvas->LineTo( X2, Y2);
    

    und siehe hier ist eine Auflistung der Pen
    http://www.functionx.com/bcb/gdi/pens.htm



  • super, danke dir 😃

    in der hilfe hab ich dazu nix gefunden, da standen nur die Methoden und Funktionen, jedoch nicht die möglichen Werte 😉

    Ich hab noch ein weiteres Problem.
    Wenn ich meine Anwendung mal in den hintergrund verlageere (durch öffnen des Browsers oder anderer anwendungen) kommt es manchmal vor, das plötzlich das Bild weg ist!
    Es kommt auch net wieder...
    Hab schon update,refresh und repaint in die zeichenfunktion geschrieben.. :<



  • Hallo

    Du must im OnPaint des Forms (eventuell hat auch die TPaintBox einen solchen Event) das Neuberechnen des aktuellen Bilds veranlassen.

    bis bald
    akari



  • Danke für deine Hilfe.

    Wenn Ihr euch das vorerst fertigekleine Tool anschauen wollt, es liegt auf meiner seite.
    http://ragesoft.de/index.php?option=com_content&task=view&id=47&Itemid=

    Sicher ist es nicht Perfekt, aber ein anfang ist gemacht.

    Wenn Ihr fehler entdeckt, bitte bescheid geben.

    MfG Puccini


Anmelden zum Antworten