2D-Grafik (war: C++ Spiel)



  • Hi,

    also ich hab schon öfters Programmiert. Nur nit mit dem C++ Builder.
    Wenn ich jetzt ein einfaches Spiel bauen will, ein Flugzeug Image ein paar Sterne in den Hintergrund zum Beispiel. Was ganz einfaches mit Images.

    Wie fange ich da am besten an. Nimmt man dafür eine normale Anwendung mit Formular, die dann ziemlich flackert, oder einen Frame ??

    Kann mir bitte jemand einen Tipp geben. Will auch keinen CODE oder so.

    Sonst werf ich den C++ Builder wieder wech..............

    Dnake im Voraus, CYA Saesch!

    Edit:
    Bitte aussagekräftige Überschriften wählen. Danke!

    [ Dieser Beitrag wurde am 03.12.2002 um 21:38 Uhr von Jansen editiert. ]



  • Da nimmst du wohl am besten DirectDraw. Im \Examples-Verzeichnis deiner BCB-Installation findest du dazu ein paar Beispiele.



  • Hi,
    am besten nimmst du ein Formular und setht die Eingenschaft DubbleBuffering (oder so) der Images auf true. Dann flackerts nicht mehr.

    Alexander Sulfrian

    if ((BCB-Hilfe != Ergebnis) && (FAQ != Ergebnis)) POST();

    [ Dieser Beitrag wurde am 03.12.2002 um 21:41 Uhr von Alexander Sulfrian editiert. ]



  • Ich würd dann ein Speicherbitmap nehmen das die Grösse vom Formular hat und da reinschreiben um es schliesslich zu einer Zeit deiner wahl aufs Formular zu malen(im Grunde auch double buffering aber naja)...

    Geht wesentlich schneller als direkt aufs Formular zu zeichnen(Auch wenn Double Buffering true ist) und flackern tut es dann auch nicht, also beispielsweise:

    Graphics::TBitmap* = new Graphics::TBitmap* puffer;
    puffer -> Width = Form1 -> Width;
    puffer -> Heigth = Form1 -> Heigth;
    
    puffer -> Canvas -> Line(0,0,puffer -> Width, puffer -> Heigth); // oder halt was andres wie bitmaps zeichnen
    
    Form1 ->Canvas->Draw(0,0,puffer);// puffer bmp auf Form zeichnen
    
    delete puffer;
    

    wenn du puffer in mehr als einer Funktion benutzen willst schreib das Vieh halt zu pivate der Klasse usw

    DX geht natürlich noch wesentlich schneller aber das ist deine Entscheidung 😉 und meistens reicht das so



  • Ganz easy!

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    Form1->DoubleBuffered=True;
    }
    

    Und schon kannste TBitmap ohne Rukeln zeichnen. Solange es keine 1024x768 sind bei einem Intervall von unter net sekunde *g*.


Anmelden zum Antworten