Anfängerfrage zu VB Forms, WPF mit Canvas und Timern

  • WPF

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Anfängerfrage zu VB Forms, WPF mit Canvas und Timern

    Ich leite eine Computer AG und habe dort einen Teilnehmer, der arbeitet an VB.net und möchte dort ein JumpAndRun coden. Ich selbst kann ganz gut coden, nicht aber mit VB. Kein Ding dachte ich und sagte ihm schon zu, dass ich da helfen werde. Bislang arbeitete er dort mit den Windows Application Forms, kam damit auch gut klar. Dann wollte ich da einfach ein Canvas draufziehen und dann mittels Timer Sachen bewegen. Problem: Wir haben die Canvas dort nicht drauf bekommen. Hm. Nach vielen hin und her ist er dann umgeschwenkt zu diesem VB WPF, was auch immer das ist. So, nach vielen Probieren: Juhu, wir haben einen Canvas und können darauf zeichnen. Jetzt schnell noch einen Timer. Oh shit, das war auch nicht so einfach. Der System.timers.timer macht wohl einen eigenen Thread auf, der es uns wiederum nicht erlaubt auf die globalen VB Variablen (wie z.B. das Canvas) zuzugreifen. Jetzt könnte ich natürlich noch ihm die Interprozesskommunikation erklären, aber das alles viel zu viel. Er ist erst 12. Gibt es eine Möglichkeit in VB.net (wo auch immer) einfach einen Canvas zu erstellen und mit einem Timer darauf zuzugreifen, so dass ich schnell leichte bewegte Bilder erhalte?

    Es wäre super, wenn mir jemand helfen könnte.

    Felix
    Willkommen im Forum.

    Die Festlegung auf eine Richtung wäre Grundlegung. Viele können WinForms, einige können WPF. Sobald Ihr Euch festgelegt habt, werden sich wohl auch die melden, die sich im entsprechenden Gebiet auskennen. Ich bin WinForms-affin. Und wie Du im Showroom z.B. bei CrazyJump von @ClonkAndre sehen kannst, geht das auch mit Jump&Run-Spielen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Hallo und Willkommen

    Als erstes muss man ja sagen das für Spiele, insbesonders für Jump & Run eine Desktop Applikation als Umgebung nicht wirklich funktioniert. Klar geht es mit sehr vielen Tricks und sehr viel mühe, aber auch dann alles andere als performant. Warum? Das Framework ist schlichtweg nicht dafür konzipiert.

    Will sich der Kollege wirklich damit beschäftigen dann würde ich ihm Unity ans Herz legen auch wenn dies nur mit C# geht.
    Muss es wirklich VB sein ist dies nur sehr schwer realisierbar. Nicht unmöglich aber schwer. Nur wenn man bereits am Anfang hängt und nicht weiter weis wird echt schwierig da hier dann wohl die Grundlagen fehlen.

    Ich würde raten schlicht mal mit WinForms zu probieren im OnPaint einfach selbst du zeichnen anstatt Controls zu missbrauchen.
    Timerinterval = Framerate
    Und dann bei jedem Frame neu zeichnen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo zusammen

    Erstmal vielen Dank für die Antworten. Die Sprache ist fix. Wir haben einen VB-Kurs und bislang fülle ich diesen eher mit so recht langweiligen Zeug aus der Kryptologie. Also Cäsar, monoalphabetisch, Vigenere. Dafür sind die Formulare auch super. Aber es ist halt echt trocken. Die Teilnehmer haben vorher in aller Regel Small Basic gemacht. Dort gab es das grafische Fenster mit den Shapes. Nun, das hat einfach echt vieles schönes geboten. Insofern sehnen sich jetzt meine Teilnehmer zurück (aber in VB!) nach grafischen Elementen. Jetzt suche ich den leichtesten Weg. Wenn ich das richtig höre, sind wir da bei WPF doch nicht so richtig. Dann besser die onPaint überschreiben?! Habe ich da auch ein Canvas oder wo lade ich dann wie meine Grafiken drauf?

    Gruß

    Felix
    Aber es gibt doch auch andere spannende Themen (finde ich), die weder selbstgebastelte Kryptologie darstellen noch JumpnRun.
    Das FrameWork ist zB ausgezeichnet geeignet für Datenverarbeitung.
    Erste Idee wäre ein VokabelTrainer.
    Denkbar ist aber auch eine Foto-Verwaltung.
    Oder wenn einer der Teilnehmer in einem Verein organisiert ist, der iwie was zu verwalten hat.

    Oder u.U. sehr ambitioniert: Wie siehts mit einer Website aus?

    Sehr hübsch sind auch physikalische Simulationen, Pendel, Chaos-Pendel, Planeten-Simulation oder ideal elastische Bälle im geschlossenen Raum, oder sowas.

    Ansonsten gibts hier auch irgendwo einen Thread, wo ProgrammierIdeen gesammelt wurden.
    Nur grad JumpnRun ist halt bischen schlecht zu machen.
    Naja, die Motivation bei nem 12-Jährigen für Vokabeltrainer, Fotoverwaltung und Co. dürfte sich in Grenzen halten. Spiele sind da meist doch die größeren Ansporner.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Ja, aber auch dafür brauche ich doch Animation, also bewegte Bilder, sprich Canvas und Timer.

    Ich halte jetzt mal für mich fest:

    "Ich würde raten schlicht mal mit WinForms zu probieren im OnPaint einfach selbst du zeichnen anstatt Controls zu missbrauchen.
    Timerinterval = Framerate Und dann bei jedem Frame neu zeichnen."
    Hallo

    Schau dir mal folgendes an: gamedev.net/blogs/entry/2266684-101-snake-winforms-gdi/

    Ein einfaches Snake unter WinForms sollte als Lernprojekt doch erstmal reichen oder.
    Du kannst es ja unter Vb.Net machen, ist ja nur ne andere Syntax.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    felixN schrieb:

    ErfinderDesRades schrieb:

    Physik-Simulation
    Ja, aber auch dafür brauche ich doch Animation, also bewegte Bilder, sprich Canvas und Timer.
    Ist richtig.
    Aber bei einer Physik-Simulation wird nur das bewegte Objekt immer neu gezeichnet - dassis locker zu schaffen.
    Bei einem JumpnRun muss der gesamte Bildschirm zig mal die Sekunde redrawt werden - und dabei schlafft WinForms ab.

    Jo - Snake Super-Idee, da ist auch immer nur ein Kästchen neu zu malen.
    Tetris wäre auch ein Kandidat - oder PacMan - da bin ich unschlagbar!



    Achso - simmer jetzt Wpf?
    Da kann ich ja mein Kein Pong - Erstaunliches mit ItemsControl.Itemspanel verlinken.
    Aber Wpf ist ganz anners als WinForms - grade bei Animation.
    In Wpf bewegen sich Controls, wovon bei WinForms abzuraten ist.
    Also wenn wolle gucks an, zur Abschreckung. IMO ist Wpf nix für Anfänger - so hübsch es auch aussieht.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()