Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie Plasma Effekt via Bitmap erzeugen?
DSS
myCSharp.de - Member



Dabei seit:
Beiträge: 12

Themenstarter:

Wie Plasma Effekt via Bitmap erzeugen?

beantworten | zitieren | melden

Hallo
Wie erstelle ich in C# ein graphisches Plasma?
Habe folgenden Code, welcher aber nur ein Standbild erzeugt.
Für ein Beispiel oder einen Link wäre ich dankbar.

DSS

                Bitmap bm = new Bitmap(pictureBoxMain.Image);
                Bitmap newBitmap = new Bitmap(bm.Width, bm.Height);

                for (int y = 0; y < newBitmap.Height; y++)
                {
                    for (int x = 0; x < newBitmap.Width; x++)
                    {
                        int color = (int)(128.0 + (128.0 * Math.Sin((x) / 8.0)));
                        newBitmap.SetPixel(x, y, Color.FromArgb(color, color, color));
                    }
                }
                pictureBoxMain.Image = newBitmap;
private Nachricht | Beiträge des Benutzers
Jompikumpi
myCSharp.de - Member



Dabei seit:
Beiträge: 36

beantworten | zitieren | melden

Woran hapert es?

Es hat mich keine Minute gekostet um mit Google eine Ahnung zu bekommen, was der Plasma Effekt ist, und kurz danach hatte ich Java und JavaScript Code. Von da sollte es nicht mehr weit sein.

Google Suche nach "plasma effect code" => erstes Ergebnis, RosettaCode

Auf den ersten Blick schön erklärt Making plasma effects
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4175

beantworten | zitieren | melden

Hallo,

du meinst eine Animation? Dann benötigst du einen Timer, der alle x ms das Bild neu berechnet und anzeigt.
Für Windows Forms: Timer
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1898
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Dabei aber nicht vergessen, die BitMap wieder per Dispose frei zu geben.
Sonst schaufelst du unmengen an Handle in deine Anwendung bis es eine OutOfMemory Exception gibt!

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4175

beantworten | zitieren | melden

Da sich die Größe der Bitmap dabei nicht ändert, sollte man nur einmalig diese erzeugen (und nur jeweils die Pixeldaten ändern).
private Nachricht | Beiträge des Benutzers
Jompikumpi
myCSharp.de - Member



Dabei seit:
Beiträge: 36

beantworten | zitieren | melden

Zitat von Th69
Hallo,

du meinst eine Animation? Dann benötigst du einen Timer, der alle x ms das Bild neu berechnet und anzeigt.
Für Windows Forms: Timer
Egal ob mit oder ohne Timer, das Bild wird sich mit seinem Code oben nicht ändern. Es macht natürlich trotzdem Sinn einen Timer zu benutzen.
private Nachricht | Beiträge des Benutzers
DSS
myCSharp.de - Member



Dabei seit:
Beiträge: 12

Themenstarter:

beantworten | zitieren | melden

Das Beispiel von Roseattacode hat leider kein C#-Beispiel.
Nach meiner Vermutung muss ich was mit der Funktion BitmapData was anstellen, diese Methode wurde schon angesprochen, nur wie sieht es nun wirklich aus?

DSS
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von DSS am .
private Nachricht | Beiträge des Benutzers
Jompikumpi
myCSharp.de - Member



Dabei seit:
Beiträge: 36

beantworten | zitieren | melden

Wenn ich den Java Code von RosettaCode.org anschaue, steht dort vor dem Timer ein Kommentar

// animate about 24 fps and shift hue value with every frame

Jetzt weißt du, was.du machen musst.
private Nachricht | Beiträge des Benutzers
DSS
myCSharp.de - Member



Dabei seit:
Beiträge: 12

Themenstarter:

beantworten | zitieren | melden

Durch diese Webseite wurde ich schlauer:
https://github.com/stevereaver/plasma/blob/master/plasma.cpp
private Nachricht | Beiträge des Benutzers