karte erzeugen



  • super danke
    das ausgeben fkt jetzt, jetzt kommt das integrieren in das programm

    ganz oben steht die klassen anordnung

    guten leitwert flo



  • super danke
    das ausgeben fkt jetzt, jetzt kommt das integrieren in das programm

    ganz oben steht die klassen anordnung

    pate kann gelöscht werden

    guten leitwert flo



  • Hallo

    Die paar Worte klingen ja schon nicht falsch, aber mehr läßt sich mangels Details nicht dazu sagen.

    bis bald
    akari



  • hallo

    danke für deine hilfe, ist leichter als ich gedacht habe, hab malwieder zu kompliziert gedacht.

    hab noch eine frage
    ist es möglich die grafische oberfläche zu verändern, um es ein spieltypisches design zu geben?
    wie würde man sowas in der suche nennen?

    guten leitwert flo



  • Hallo

    sicher ist das möglich, nur must du dann eben alles selber zeichnen.
    Stichwort ist Canvas.

    bis bald
    akari



  • hab da wieder eine etwas peinliche frage

    um die karte zwischen zuspeichern benutze ich ein array, ich benutze ein dreidimensionales array, zweidimensionen für die position und die dritte für das terrain also ob berg oder weideland... und was für ressorcen auf dem feld ist.

    meine frage ist jetzt, wie kann ich die größe des array variable machen,

    konstruktor(x,y)
    {
    array[x][y];
    }

    ist das überhaubt möglich
    und macht ein array hier überhaubt sin, oder gibs noch bessere metoden?

    nochmals danke

    guten leitwert flo



  • Hallo

    du kannst das Array dynamisch machen, in dem du entweder selber den Speicher dafür reservierst und dann auch wieder freigibst (new und delete), oder indem du zum Beispiel std::vector verwendest.
    Zu beiden varianten findest du im C++ Forum genug Threads.

    bis bald
    akari



  • akari schrieb:

    Du willst doch die Bitmaps irgendwo darstellen, oder? Das kann ja das Form selber sein, aber auch ein TImage. Wichtig ist das diese Ziele die Eigenschaft Canvas haben, so das du schreiben kannst

    ImageList->Draw(Image->Canvas, ...);
    

    eins verstehe ich nicht:
    wenn ich des so mache wie oben beschrieben wieso kann ich dann nicht wenn ich
    des ganze bild vollgemalt hab irgendwelche stellen überschreiben,
    sondern muss vorher immer des gesamte bild löschen??

    Edit: ich muss nicht mal des bild vollgemalt haben, sobald ich aufhöre zu malen,
    und wieder anfangen möchte funktioniert das malen nicht mehr!!

    oder hab ich da was falsch verstanden??
    Gruß KY



  • Hallo

    du kannst dir das Zeichnen wie in einem einfachen Bitmap-Zeichenprogramm vorstellen. Du kannst immer nur überzeichnen, aber nichts mehr wieder wegnehmen. Also kein UNDO. Deshalb ist es meistens besser, für Bewegungen das gesamte Bild neu zu berechnen.

    und wieder anfangen möchte funktioniert das malen nicht mehr!!

    Weiß nicht was du meinst. Weder sehe ich was du du für Code ausführst, noch was du mit "funktioniert nicht" meinst.

    bis bald
    akari



  • also ich hatte gemeint, dass wenn ich folgendermasen zeichen:

    for(int x=0;x<14;x++)
    {
      for(int y=0;y<9;y++)
      {
        Karte->Draw(Back->Canvas,x*32,y*32,map[x][y],true);
      }
    }
    

    Karte ist meine TImageList, wo die Landschaften drin sind.
    Back ist ein TImage wo die Karte drauf gezeichent wird.
    map[][] ist ein int-Array wo meine Landschaftstyp gespeichert ist.
    Jedes Landschaftsstück ist 32*32 pxl groß.

    Jetzt muss ich aber jedesmal wenn ich die Karte neuzeichnen möchte:

    Back->Picture=0;
    

    und dann kann ich die Fkt von oben anwenden.
    Wenn ich des nicht mache, ändert sich rein gar nichts!!

    Ich bin grad an einer realisierung mit einem TBitmap,
    da funktioniert des wunderbar 😃



  • hallo

    hab noch eine frage, hab eine wunderbare karte erzeugt, dank euch

    nun möchte ich da noch gerne eine zoomfkt einbauen, gibs da auch irgendwelche tricks?
    mir würde jetzt einfallen, nochmal alle kartenteile in eine neue imageliste laden, die dann aber kleiner ist... aber da das jetzt schon ziemlich langsam ist, würde ich eine andere methode bevorzugen

    mfg flo



  • Hallo

    Du must anstelle der Methode Draw die Methode StretchDraw verwenden, und den Zoom-Faktor mit berechnen.

    bis bald
    akari



  • ah danke

    void __fastcall StretchDraw(const Windows::TRect &Rect, TGraphic* Graphic);

    kannst du mir noch sagen was das für übergabe werte sind?
    also aus der hilfe weiß ich das man ein rechteck angeben muss, aber dafür muss ich mindestens 4 werte übergeben obenlinks, untenrecht. Graphic ist dann das bild selber.

    und wie vereinige ich das mit meiner bisherigen funktion, da stretchdraw mir ja irgendwie nicht die möglichkeit bittet die x und y koordinate und teile des bildes als durchsichtig zu zeichnen mitzugeben

    Form1->Imgl_TerrainTeil->Draw(Form1->Pntb_Bundesstaat->Canvas, x, y, Kartenteil, true);

    guten leitwert flo



  • hallo
    will noch einwenig nerven 😃

    ich will die bilder aus einer datei lesen und nicht mit hilfe von einer imagliste ausgeben.
    das funktioniert auch wunderbar nur ich bekomme das nicht hin das einige teile des bildes transparent sind.

    imprinzip fehlt mir das, was das true hier am ende macht.

    Form1->Imgl_TerrainTeil->Draw(Form1->Pntb_Bundesstaat->Canvas, x, y, Kartenteil, true);
    

    danke
    mfg flo



  • Der letzte Parameter (bool bEnabled) steuert nur, ob das Bild in Graustufen dargestellt werden soll.

    Wenn du Transparenz haben willst, schau mal bei den Eigenschaften von TImage bzw. TGraphic nach:
    - Transparent
    - TransparentColor
    - TransparentMode


Anmelden zum Antworten