Suchergebnisse

Suchergebnisse 1-30 von insgesamt 38.

  • Benutzer-Avatarbild

    Zitat von Schmandal: „Picturebox“Welchem Parent-Control gehören denn Picturebox und Flowlayoutpanel an? Gugst Du in der Prozedur InitializeComponents(), wessen Control-Collection sie zugewiesen werden. Poste ggf. den ganzen Code: FormX.vb, FormX.Designer.vb.

  • Benutzer-Avatarbild

    Zitat von Schmandal: „Bis auf die Karten nutze ich schon die Paint Methode.“Aber genau da wäre sie angebracht. Wenn Du natürlich im Paint-Event des Hauptfensters selbst alle Karten malen willst, wirst Du nicht froh werden. Löse das objektorientiert: Mach Dir eine Karten-Klasse, wenn Du sie nicht schon hast. Gib dieser Klasse eine Paint-Prozedur, die nix anderes tut, als sich selbst zu zeichnen. Erforderliche Informationen wäen da nur die Karte selbst, also Farbe und Wert (Pik-Dame oder Schell-Lu…

  • Benutzer-Avatarbild

    Zitat von Schmandal: „Ist das soweit sinnvoll?“Nicht ganz. Die Klasse Cards darf nix wissen von game.brett und game.MImages. Gib ihr kein Pain-Event, sondern eine Draw-Prozedur, der Du das Graphics-Objekt als Parameter übergibst. Eine Funktion, die nur True zurückgibt, taugt nix, mach da ne Sub draus.Das Bild selbst übergib im Konstruktor. Wenn Du die Karten später bewegen willst, übergib die Koordinaten an die Draw-Prozedur direkt.Die Instanz invalidisieertr kein äußeres Objekt. So etwa: VB.NET…

  • Benutzer-Avatarbild

    Zitat von Schmandal: „indizierten Pixelformat“OK. Die Bilder musst Du zunächst umkopieren: VB.NET-Quellcode (7 Zeilen)

  • Benutzer-Avatarbild

    Zitat von Schmandal: „alle Möglichkeiten durch“Offensichtlich nicht. VB.NET-Quellcode (18 Zeilen)

  • Benutzer-Avatarbild

    Zitat von Schmandal: „ständig alle Koordinaten berechnen“Das ist eine Frage der Organisation. Du hast iwo eine List(Of Cards) und Du machst Dir einfach eine DrawAllCards()-Routine. Dort per For Each durchgehen und die Koordinate der nächsten Karte per Offset zur letzten Karte berechnen. Und für die Zukunft: Gib Deinen Karten ein Deckblatt, da kannst Du sie auch anders herum zeichnen (also die Rückseite).

  • Benutzer-Avatarbild

    Vielleicht machst Du den Offset von der Anzahl der Karten abhängig. Wenn es schnell genug geht, male immer alle Karten neu. Vielleicht kannst Du auch die Größe des Bildes von der Anzahl abhängig machen, dann gib den Karten noch ne Property Zoom.

  • Benutzer-Avatarbild

    @Schmandal Poste mal ein paar Originalbildchen. Wahrscheinlich müssen die geeignet gerendert werden, da musst Du Dir mal die Überladungen von DrawImage() ansehen.

  • Benutzer-Avatarbild

    @Schmandal Dieses Problem kann ich nicht nachvollziehen. (Versteckter Text)Bei mir sieht das (unproportional) so aus:

  • Benutzer-Avatarbild

    Zitat von Schmandal: „e.Graphics.DrawImage(bmaps.Images(i), New Rectangle(x, 0, 80, 60))“Tausch mal 60 und 80. vb-paradise.de/index.php/Attachment/36500/

  • Benutzer-Avatarbild

    Zitat von Schmandal: „nichts geändert“Solche Leute werden desöfteren ... (von der Zensur gestrichen). Mach mal ein kleines Testprojekt, das Deinen Effekt reproduziert und häng es als Zip an. Pack die Images dazu in die Ressourcen.

  • Benutzer-Avatarbild

    Zitat von Schmandal: „Imagelist“ist für Icons auf Button, TabControls usw. Pack sie in die Ressourcen und mach Dir ein Array davon: VB.NET-Quellcode (1 Zeile)

  • Benutzer-Avatarbild

    Zitat von Schmandal: „in die Ressourcen“nicht, wohl aber in eine List(Of Image).

  • Benutzer-Avatarbild

    Zitat von Schmandal: „card.DrawMe(e.Graphics)“ist wie genau deklariert? Steht da ein Parameter vom Typ Object drin, wo der Typ Graphics drin stehen müsste?

  • Benutzer-Avatarbild

    Zitat von Schmandal: „VB.NET-Quellcode (1 Zeile)“Char geht unter VB.NET so: VB.NET-Quellcode (1 Zeile)

  • Benutzer-Avatarbild

    @Schmandal Du musst die Position jeder Karte als Funktion ihrer Position im Stapel berechnen. Wenn eine Karte weg ist, dann rücken alle anderen nach.

  • Benutzer-Avatarbild

    Zitat von Schmandal: „nicht jedes Mal alles neu berechnen“heißt, dass eine Lücke bleibt, die Du ja nicht haben willst. Also: Jedes Mal neu berechnen. Das hatten wir bereits in Post #29.

  • Benutzer-Avatarbild

    Zitat von Schmandal: „Bastel alle noch vorhandenen Karten wieder als List(of Object) zusammen ohne "Lücke"“ist dahingehend nicht sinnvoll, da in einer List(Of Card) keine Lücke vorkommt. Als Alternative zur ObservableCollection(Of Card) vom @ErfinderDesRades : vielleicht machst Du Dir eine Klasse Kartenstapel, wo alle Karten eines Spielers oder der "Stapel" in einer List(Of Card) enthalten sind. Diese weiß dann, wie die Karten darzustellen sind, so dass keine Lücken dargestellt werden.

  • Benutzer-Avatarbild

    Zitat von ErfinderDesRades: „CollectionChanged-Event“braucht es in der Klasse nicht unbedingt, da das Card-Add- und das Card-Remove-Event von außen in die Klasse reingereicht werden müssen.

  • Benutzer-Avatarbild

    Seh ich nicht so. Von irgendwo kommt gesagt, dass die Schell-7 oder die 4. Karte im Stapel abgelegt wird. Die Klassen-Instanz reagiert darauf, entfernt diese Karte und malt alles / das meiste / das richtige neu. Oder Ich sage der Collection, dass sie diese Karte entfernen soll und löse damit ein Event aus, infolge dessen alles / das meiste / das richtige neu gemalt wird.

  • Benutzer-Avatarbild

    Zitat von ErfinderDesRades: „und feddich“is aber meine Formulierung. @Schmandal Das Beste wäre gewesen, Du hättest mit einer ordentlichen Aufgabenstellung angefangen, die all dies bescxhreibt, ohne dass Du eine einzige Zeile Code geschrieben hättest. Dann hätten wir das gemeinsam perfektionieren können und Du härrest dann der einen oder der anderen Variante den Vorzug geben können. Nun sitzt Du sozusagen zwischen zwei Stühlen und denkst, Du seiest Buridans Esel.

  • Benutzer-Avatarbild

    Zitat von Schmandal: „ihr Euch in Ruhe zurückziehen“der @ErfinderDesRades und ich - das wird nicht unbedingt gut gehen, da wir in einigen Dingen sehr verschiedene Meinungen vertreten. Das macht uns hier im Forum absolut nix aus, denn hier im Forum müssen das die Thread-Ersteller "ausbaden" und wir lachen intern darüber . Bei einer unmittelbaren Projektzusammenarbeit sähe das möglicherweise anders aus, allerdings lassen sich da die Aufgaben disjunkt verteilen.

  • Benutzer-Avatarbild

    @Schmandal Da gibt es grundsätzlich 2 Möglichkeiten.1. Du ermittelst die Dauer einzelner Teil-Abläufe, dazu gibt es die Klasse StopWatch. 2. Du generierst an beliebigen Stellen Deines Programms TimeStamps und berechnest die äquivalenten Dauern, dazu gibt es die Klasssen DateTime und TimeSpan. Am besten, Du machst die Ausgaben in die Console: Console.WriteLine(bla), die erscheinen dann im Ausgabebereichs des Studios.

  • Benutzer-Avatarbild

    @Schmandal Du musst Dein Spiel nicht unbedingt sofort perfekt programmieren. Lerne mit Deinen Aufgaben, lerne an Deinen Fehlern. Stell iwann fest, dass das malen halt zu lange dauert und dann zerpflückst Du das ganze. Im Vorfeld dies alles perfekt planen zu wollen ist nur schwer möglich, da musst Du einfach schon ein paar ähnliche Projekte gestemmt haben, bevor Du das alles sofort überblickst. Lass Dir einfach noch ein paar feine Verbesserungen für die 2. Version.

  • Benutzer-Avatarbild

    Zitat von Schmandal: „Picturebox vor das FlowLayoutPanel“In welcher Beziehung stehen die beiden denn zueinander? Mach mal ne Skizze.

  • Benutzer-Avatarbild

    @Schmandal Wo und zu welchen Gelegenheiten rufst Du ein Invalidate(...) auf?

  • Benutzer-Avatarbild

    Zitat von Schmandal: „VB.NET-Quellcode (1 Zeile)“ist in zweierlei Hinsicht ein NoGo.- Karten invalidisieren sich nicht selbst, sie stellen sich selbst dar, wenn sie von außen invalidisiert wurden. - Karten dürfen nix von der GUI wissen, auf der sie dargestellt werden. So kannst Du die Klasse einfach ins nächste Spiel kopieren und feddich.

  • Benutzer-Avatarbild

    Zitat von Schmandal: „VB.NET-Quellcode (1 Zeile)“Mach da 2 Schleifen ohne If draus: VB.NET-Quellcode (9 Zeilen)

  • Benutzer-Avatarbild

    Zitat von Schmandal: „_X“Wozu merkst Du Dir beide Koordinaten einzeln? Mach doch gleich einen Point() draus, den kannst Du dann auch bei Get verwenden.

  • Benutzer-Avatarbild

    Zitat von ErfinderDesRades: „den man ihr zuweist“Eine Bereichsbegrenzung kann da durchaus vorgenommen werden.