Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: [C#] Lags in den Formen

[C#] Lags in den Formen 6 Jahre 3 Wochen her #2003

  • Sanzas
  • Sanzass Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 11
  • Dank erhalten: 1
  • Karma: 1
Hey!

ich erstelle zurzeit ein recht großes Programm, in dem es eig. auf jede Sekunde ankommt.
Es ist mittlerweile mehr ein Spiel als ein Programm :P
Da ich nun die Demo beendete, wollte ich diese nun mit Grafiken aufpeppen. Als ich dies allerdings machte, fing die Form plötzlich an zu laggen... Ich habe unten Rechts eine Uhr eingefügt, die auch millisekunden anzeigt. Und diese ruckeln... also es überspringt immer ein paar. Wenn ich die Grafiken wieder entferne, läuft wieder alles wunderbar...

Ist Visual C# einfach nicht gemacht um sowas auszuhalten oder liegt es möglicherweise einfach nur an meinem Pc? Eig. sollte dieser es schaffen... ^^


Lg Sanzas
Letzte Änderung: 6 Jahre 3 Wochen her von Jonny132.

[C#] Lags in den Formen 6 Jahre 3 Wochen her #2005

  • Jonny132
  • Jonny132s Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 151
  • Dank erhalten: 3
  • Karma: 4
Hallo Sanzas,

wies aussieht hat die Freischaltung diesmal gleich geklappt ;)

Dein Anliegen ist nicht so einfach zu beantworten.

Wenn es sich um ein kleines 2D-Spiel handelt dürfte C# und GDI+ ausreichen.
Wenns etwas aufwändiger werden soll, müsstest du dich mit dem XNA-Framework auseinandersetzen welches auch auf C# aufbaut.

Prinzipiell gilt für GDI+ alles was man zeichnen muss, im Paint-Ereignis zu zeichnen.
Da du auch etwas von Millisekunden erwähnt hast muss ich dir leider sagen, dass das eine zu kleine Zeiteinheit für Windows ist. Windows ist kein Echtzeitbetriebssystem und auch die Timer (die du anscheinend verwendest) sind nicht so genau. (Im besten Fall im 10 Millisekunden Bereich)

Du solltest also überlegen ob du soetwas wirklich brauchst.

Ein zusätzlicher aber sehr Hilfreicher Tipp ist auch die DoubleBuffered-Eigenschaft der Form auf true zu stellen - somit sollten deine ersten Probleme gelöst sein ;)

sg
Letzte Änderung: 6 Jahre 3 Wochen her von Jonny132.

[C#] Lags in den Formen 6 Jahre 3 Wochen her #2007

  • Sanzas
  • Sanzass Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 11
  • Dank erhalten: 1
  • Karma: 1
Hey,

ja hat geklappt ^^
Das Game besitzt nichtmal ne Grafik.... Es hat bloß Bilder :)

Das "einzige" was ich eig. tue, ist der Form einen Hintergrund zu geben. Das alleien lässt die Form schon Buggen.... es ist nicht nur der Timer.
Auch die meldungen sowie Buttons reagieren zeitversetzt.
Es ist zwar nicht allzu schlimm, allerdings habe ich es bisjetzt nur auf 2 Formen gemacht.... und ich habe ca. 10. Und es kommen eig. noch viele mehr...

Ich mach mir halt sorgen darum wie es aussieht wenn jede Form das Hintergrundbild hat...

Lg Sanzas

[C#] Lags in den Formen 6 Jahre 3 Wochen her #2013

  • Jonny132
  • Jonny132s Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 151
  • Dank erhalten: 3
  • Karma: 4
Hallo,

da müsstest du etwas Ausführlicher werden damit ich dir helfen kann.

Bilder in Pictureboxen welche du animierst?
Buttons die Bewegt werden?

Beides wäre nicht optimal.
Was machst du im Timer-Tick? Wenn das zu lange dauert ist es nur logisch, dass die Form nicht mehr 'hinterherkommt'.

sg

[C#] Lags in den Formen 6 Jahre 3 Wochen her #2015

  • Sanzas
  • Sanzass Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 11
  • Dank erhalten: 1
  • Karma: 1
Hey,

ich habe alles entfernt, außer ein einziges, großes Bild.
Die Form hat standardmäßig einfach nur die Farbe Grau. Anstatt der Grauen Farbe hab ich allerdings ein Bild reingehauen.
Das alleine schon lässt die Form hinterher hängen.

Der Timer ist ehrlich gesagt der "vorgefertigte" von dir. Selbe einstellung.

Lg Sanzas

[C#] Lags in den Formen 6 Jahre 3 Wochen her #2016

  • Jonny132
  • Jonny132s Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 151
  • Dank erhalten: 3
  • Karma: 4
Hi,

du beziest dich wohl auf
tuts4you.de/87-programmieren/csharp/80-c-countdown-mit-timer-erstellen

Also sofern DoubleBuffered ein ist, und das Bild nicht eine extreme Auflösung hat, seh ich da kein Problem.
Der Timer im Tutorial hat ein Interval von 50, wenn du es etwas höher stellst könnte das dazu führen, dass andere Codeteile schneller abgearbeitet werden.

Ansonsten könntest du auch noch versuchen, das Hintergrund Bild auch im Paint Ereignis (DrawImage) zu zeichnen.

Aber im Prinzip, wenn das wirklich alles ist was du machst, sollte DoubleBuffered ausreichen.

sg

[C#] Lags in den Formen 6 Jahre 3 Wochen her #2019

  • Sanzas
  • Sanzass Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 11
  • Dank erhalten: 1
  • Karma: 1
Ich hab ihn auf 75 raufgeschraubt, ändert aber nichts. Ich belaß es jetzt allerdings dabei und schau einfach wie sich das entwickelt. Wenn es halt so ist, solls halt so sein...

Lg Sanzas

[C#] Lags in den Formen 5 Jahre 11 Monate her #2244

  • Sanzas
  • Sanzass Avatar
  • OFFLINE
  • Fresh Boarder
  • Beiträge: 11
  • Dank erhalten: 1
  • Karma: 1
Problem gelöst.

Lösung:

- Hintergrundfarbe (Backcolor) auf weiß (white) stellen (anstatt auf evtl. Transparent)
- BackgroundImageLayout auf 'Center' (anstatt auf Tile)


:)
Letzte Änderung: 5 Jahre 11 Monate her von Sanzas.
Folgende Benutzer bedankten sich: Jonny132

[C#] Lags in den Formen 5 Jahre 11 Monate her #2269

  • Jonny132
  • Jonny132s Avatar
  • OFFLINE
  • Administrator
  • Beiträge: 151
  • Dank erhalten: 3
  • Karma: 4
Hey Sanzas,

danke dass du die Lösung hier noch postest - Vielleicht hilft sie mal jemand anderem.

Dass .NET mit Transparenz nicht wirklich klarkommt wusste ich - davon hast du jedoch nichts erwähnt ;)
Das mit dem BackgroundImageLayout ist jedoch interessant - Danke.

sg
Ladezeit der Seite: 0.175 Sekunden