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
Bildinhalt verschwindet wenn Fenster verdeckt ist! Wie Inhalt schlagartig wiederherstellen?
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

Bildinhalt verschwindet wenn Fenster verdeckt ist! Wie Inhalt schlagartig wiederherstellen?

beantworten | zitieren | melden

Beim Klick auf mein Panel wird Pixel für Pixel ein Farbwert gezeichnet.
Ich finde C# in dieser Hinsicht recht lahm, 300x200 Pixel dauern mehrere Sekunden auf einen flotten Rechner!! 8o (Java ist da sogar viel viel schneller). Wenn ich Punkt für Punkt mittels fillRectangle zeichne, dann gibt es leider auch kaum Geschwindigkeitsunterschiede! Gibt es eine schnellere Methode Punkt für Punkt zu zeichnen?
Vor allem wird dummerweise der Bildinhalt verloren, wenn das Fenster auserhalb des Monitors verschoben wird! Kann man das gezeichnete auf einen Schlag wiederherstellen? Wie?

 private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            Graphics graph = panel1.CreateGraphics();            
            Bitmap bmp = new Bitmap(301, 201);
            for (int i = 0; i ≤ 300; i = i + 1)
            {
                for (int j = 0; j ≤ 200; j = j + 1)
                {  
                    //in Wirklichkeit wird hier Pixel für Pixel ein anderer Code gezeichnet, der Code-Einfachheit halber aber:                  
                    bmp.SetPixel(i, j, Color.FromArgb(255, 250, 0));
                }
            }
            graph.DrawImage(bmp, 0, 0);           
            graph.Dispose();
        }
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo sharp,

siehe hierzu das Tutorial [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox) sowie GetPixel und SetPixel um Längen geschlagen. 800 mal schneller
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Cool, danke. (Ja wie, da hat ein Privatmann einfach so selbst einen Code geschrieben der um Größenordnung schneller als MIcrosofts Code ist? Wieso macht Microsoft es nicht gleich richtig?)

Dort steht: "GDI32 GetPixel und SetPixel sind ebenfalls so schnell"
Ich kenn aber nur GDI+. Habe Visual Studio 2005.

Wie krieg ich GDI32? Ist es viel Aufwand?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,
Zitat
Ich kenn aber nur GDI+.
GDI oder GDI+: hier ist sowieso das gleiche damit gemeint.
Zitat
Wie krieg ich GDI32? Ist es viel Aufwand?
Du kannst mit DllImport auf als Win32-Funktionen durchgreifen. Siehe www.pinvoke.net

Viel Aufwand nicht, aber eher unschön/unnötig.

herbivore
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Danke für die Antwort.

Habe mr jetzt [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox) angeschaut. Ich sehe dort aber leider nicht eine Beschreibung wie der Bildinhalt restauriert werden kann? (Ich will ja übrigens nicht irgendwelche Kreise und so Sachen restaurieren, sondern Millionen von Pixeln!!)
In welcher Post ist dort die Lösung beschrieben?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,
Zitat
In welcher Post ist dort die Lösung beschrieben?
in allen. In allen Beispielen in sichergestellt, dass der Bildinhalt "restauriert" wird. Es ist außerdem genau beschrieben, wie das funktioniert. Du kannst dir also eine Vorgehensweise aussuchen.

herbivore
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Mit picturebox hat es nach viel probiererei geklappt

Jetzt hab ich nur noch das Problem wie ich GDI32 importiere?
Egal an welcher Stelle ich es im Code einfüge, ich krieg immer wegen der [DllImport]-Zeile Compilerfehler.

        public Form1()
        {
          [DllImport("gdi32.dll")] 
          static extern uint SetPixel(IntPtr hdc, int X, int Y, uint crColor);
        //  [DllImport("gdi32.dll")] 
        //  public static extern int PtInRegion(int hRgn, int x, int y); //so hats auch net gefuntzt
            InitializeComponent();
        }
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,
Zitat
ich krieg immer wegen der [DllImport]-Zeile Compilerfehler.
welchen? Siehe [Hinweis] Wie poste ich richtig? Punkt 5. Siehe außerdem [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen).

herbivore
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Puh, 10 Stellen werden in dieser Zeile syntaktisch rot markiert!!

[DllImport("gdi32.dll")] static extern uint SetPixel(IntPtr hdc, int X, int Y, uint crColor);
[DllImport => "; expected"
] => "invalid expression
static extern uint => jeweils "invalid expression term"
( => "expected ; or ="
hdc => ") expected"

und es geht so weiter an den anderen Stellen...
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Ich hab die Zeile jetzt oberhalb von

public Form1()
geschoben, und krieg endlich keine Compilerfehler! (Merkwürdig, dachte, dass ich diese Stelle eigentlich durchprobiert hatte).
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Dummerweise zeichnet er den Pixel nicht in meine PictureBox, sondern ins Panel!

Graphics vGraphics = Graphics.FromHwnd(Handle);
SetPixel(vGraphics.GetHdc(), 10, 10, (uint)ColorToRGB(Color.Green));

Habe mir erhofft, dass so das grüne Beispielpixel in meine Picturebox gezeichnet wird, aber damit zeichnet er scheinbar überhaupt nichts! X( Hier der Code:

Graphics vGraphics = Graphics.FromImage(pictureBox1.Image);
SetPixel(vGraphics.GetHdc(), 10, 10, (uint)ColorToRGB(Color.Green));

Und das find ich noch merkwürdiger, wieso stützt er ab! Aber ich will ja viele Pixel zeichnen!! X(

Graphics vGraphics = Graphics.FromHwnd(Handle);
SetPixel(vGraphics.GetHdc(), 10, 10, (uint)ColorToRGB(Color.Green));
SetPixel(vGraphics.GetHdc(), 10, 10, (uint)ColorToRGB(Color.Green)); //aufgrund dieser doppelt vorkommenden Zeile stützt Programm!

Ich möchte also viele Pixel zeichnen, und diese in meine Picturebox zeichnen, aber wie?

Das war mein urspünglicher Code, nur das Zeichnen war halt sehr langsam...:

Graphics graph = Graphics.FromImage(pictureBox1.Image);
graph.FillRectangle(...,...,...,1,1); //Punkt zeichnen

Hier nochmals der direkte Gdi32 Link mit der Dll: http://www.pinvoke.net/default.aspx/gdi32.SetPixel
Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,

ich muss nochmal auf [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox) verweisen. Zeichne entweder mit e.Graphics im OnPaint oder mit Graphics.FromImage direkt in das Bild der PictureBox. Alles andere ist Mist.

herbivore
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Zitat von herbivore
oder mit Graphics.FromImage direkt in das Bild der PictureBox.
Das hab ich ja auch wie oben beschrieben versucht:

Graphics vGraphics = Graphics.FromImage(pictureBox1.Image);
nur so zeichnet er garnichts, wie oben beschrieben!
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,

in meinem Tutorial steht aber Code mit dem es geht. Vermutlich fehl bei dir das Invalidate.

herbivore
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Ich habs ohne Invalidate gemacht (brauch ich doch auch nicht?), hab meinen Zeichnen-Code hier eingefügt:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
}
In diesen Code hab ich ja auch net Invalidate verwendet, und der Bildinhalt ist schlagartig da, wenn das Fenster wieder zurückgeschoben wird:

funtzt, Bildinhalt wird tatsächlich schlagartig restauriert:

Graphics graph = Graphics.FromImage(pictureBox1.Image); 
graph.FillRectangle(brush, ... , ... , 1, 1); //Nachteil: ewig langsames zeichnen...

funtzt, aber mit deinem beschriebenen Nachteil: Bildinhalt wird nicht restauriert...

Graphics vGraphics = pictureBox1.CreateGraphics();
IntPtr intPtr = vGraphics.GetHdc();
SetPixel(intPtr, 10, 10, (uint)ColorToRGB(Color.Green));
SetPixel(intPtr, 10, 10, (uint)ColorToRGB(Color.Green)); //Programm stürtzt jetzt übrigens nicht mehr wie vorher ab, da ich intPtr verwende!
Übrigens, wie man sieht, eine Sache konnte ich hier ausnahmsweise sogar selber lösen: ich verwende nicht mehr "vGraphics.GetHdc()" als Argument, sondern intPtr, damit kann ich beliebig viele Pixel zeichnen.
Ich versteh's zwar überhaupt nicht, aber es läuft.

Wieso funtzt das net:
(Denn wenn so klappen würde, hätte ich ja die schlagartige Bildrestaurierungsfunktion gepaart mit dem schnellen setpixel-zeichnen.

Graphics vGraphics = Graphics.FromImage(pictureBox1.Image);
IntPtr intPtr = vGraphics.GetHdc();
SetPixel(intPtr, 10, 10, (uint)ColorToRGB(Color.Green));
Dieser Beitrag wurde 6 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,

ich kann dich nur nochmal auf das Tutorial verweisen. Hast du das überhaupt richtig gelesen? Ich denke, du hast die Zeichenlogik in Windows noch nicht verstanden. Es reicht eben nicht, im MouseDown zu zeichnen.

Außerdem ist CreateGraphics Mist. Steht alles im Tutorial.

herbivore
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Ok, werd ich mir mal genauer durchlesen.

Aber trotzdem, die Sache find ich irgendwie voll unlogisch, denn das funktioniert ja prima mit der sofortigen Bildinhalt-restaurierung:

Graphics graph = Graphics.FromImage(pictureBox1.Image);
graph.FillRectangle(brush, ... , ... , 1, 1); //Nachteil: ewig langsames zeichnen...
Und wenn es funktioniert, dann ist es doch egal ob ichs fälschlicherweise in MouseDown zeichne, oder?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,

nein, es ist nicht egal, wo du zeichnest. Und CreateGraphics ist Mist. Aber wir drehen uns im Kreis. Es steht alles im Tutorial.

herbivore
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Ok, dort steht man soll im Paint oder OnPaint zeichnen, habe also Paint genommen:

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            Graphics graph = Graphics.FromImage(pictureBox1.Image);
            SolidBrush brush = new SolidBrush(Color.Red);
            for (int i = 0; i ≤ 300; i = i + 1)
            {
                for (int j = 0; j ≤ 200; j = j + 1)
                {
                     graph.FillRectangle(brush,i,j,1,1);
                }
            }             
        }

Aber ich versteh die Philosophie nicht: Ich muss nun sekundenlang bei jeder Restaurierung warten (weil er ja den Paint Code automatisch aufruft)! Ich bin nun also durch sekundenlange Warterei bestraft weil ich nun Paint verwende? ?(
Oder hab ich schon wieder was falsch gemacht?
Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,
Zitat
Aber ich versteh die Philosophie nicht: Ich muss nun sekundenlang bei jeder Restaurierung warten
das liegt ja nur an deiner ineffizienten Wiese zu zeichnen, nicht an der Philosophie.

Pixelweise zu zeichnen ist nicht das Ideale. Warum zeichnest du nicht ein große Rechteck statt vieler kleiner. Du zeichnest sie ja eh alle in rot.

Ansonsten gibt es ja in [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox) noch die Alternative mit der PictureBox.

herbivore
private Nachricht | Beiträge des Benutzers
Klaus L.
myCSharp.de - Member



Dabei seit:
Beiträge: 14
Herkunft: Nahe KA

beantworten | zitieren | melden

Zitat von sharp
Ich bin nun also durch sekundenlange Warterei bestraft weil ich nun Paint verwende? ?(
Oder hab ich schon wieder was falsch gemacht?

nein, das ist nunmal so in .net.

Du kannst dir das leben aber auch leicht machen: Nimm einfach die Api-Funktion CreateDIBSection (Gdi32) und erzeug dir eine DIB in benötigter Größe. Die Funktion liefert dir eine Speicheradresse, an der sich die Bilddaten befinden. Diese Daten kannst du direkt (ohne Setpixel oder DC) setzen. Wenn es 24-Bit-Grafik sein soll, mußt du einzelne Bytes setzen, wenns 32-Bit sind, kannst du 4-Byte-Integer für die Farben verwenden (beachte, dass du Rot und Blau vertauschen mußt).

Du kannst dem Speicherbereich auch eine Array überstülpen (Zeiger auf die Daten in eine Safearry-Stuktur eintragen). Wie das prinzipiell geht, ist z.B. hier beschrieben: http://www.activevb.de/tutorials/tut_safearray/safearray.html

Wenn deine Bitmap befüllt ist, brauchst du sie nur noch irgendwie in ein Fenster oder eine Picturebox zu übertragen. Du könntest die DIB z.B. in einen DC laden und dann per Bitblt übertragen. Wahrscheinlich gibt es auch eine zulässige C#-Methode.

Dies Möglichkeit ist vermutllich von allen die schnellste, da keine Grafikmethoden benötigt werden, um Bits zu setzen und vor allem hast du eine persistente Grafik, die du nicht ständig neu zeichenen mußt. Obendrein kannst du die DIB auch mal schnell auf die HD dumpen.

Gerade in diesen Dingen sind die althergebrachten Methoden doch sehr viel einfacher und vor allem geradeaus.

Gruß,

Klaus
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Klaus L. am .
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo sharp,

außerdem bringt es nichts, im Paint-Handler einer Picturebox das Bild, das diese darstellen soll, neu zu zeichnen.
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Ich zeichne in Wirklichkeit jeden Pixel in einer anderen Farbe! (zigtausende oder sogar hundertausende Pixel!) (Habe den Code absichtlich sehr vereinfacht, ansonsten wärs sehr lang) Edit: Ich zeichne nicht Kreise oder Rechtecke, sondern muss auf tieferer Ebene, nämlich Pixel zeichnen.
(Und selbst wenn ichs später nochmal mit der schnellen GDI32 PIxel-Zeichnerei versuch, bei großen Bildern wärs damit zwar viel besser, aber würde bestimmt sowiso noch paar Sekunden dauern(zu lange!!), weil mein Code der den Farbwert berechnet zeitaufwendig ist).
Zitat
außerdem bringt es nichts, im Paint-Handler einer Picturebox das Bild, das diese darstellen soll, neu zu zeichnen.
Hmm. Aber laut dem Link sollte ich doch Paint verwenden? (Ich raffs wohl wieder net). Bzw. wie hätte ichs machen sollen?

Interessante Idee Klaus, danke. (Hört sich aber zu kompliziert an )
Zitat
Ansonsten gibt es ja in [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox) noch die Alternative mit der PictureBox.
Gilt das in meinen Fall noch immer, also das letzte Beispiel des Links hat damit zu tun?
Oder muss ich nun in meinen "speziellen" Fall ganz anders vorgehen als in deinen Link?
Dieser Beitrag wurde 7 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,
Zitat
Hmm. Aber laut dem Link sollte ich doch Paint verwenden? (Ich raffs wohl wieder net). Bzw. wie hätte ichs machen sollen?
wie wäre es, wenn du das Tutorial mal im ganzen, in Ruhe und im Zweifel mehrmals liest. Alle Fragen die du gestellt hast, werden darin beantwortet. Das Tutorial behauptet keineswegs, dass man nur in Paint zeichnen kann (auch wenn die Verwendung von Paint schon im Vordergrund steht), sondern zeigt eben genau eine Alternative auf.

herbivore
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Oh menno, das sagt sich so einfach, das versuch ich doch, nur meine Versuche klappen ja nicht, wie man sieht.
Aber bitte wenigsten paar kleine Tipps, nicht dass ich komplett auf das falsche Pferd setze:
Pixel für Pixel in eine Liste zu speichern um mit dieser Liste den Bildinhalt zu restaurieren könnte selbst mit GDI32 bei großen Bildern (1000x1000) die Bildinhalt-restaurierung vielleicht paar Sekunden dauern? Diese Methode fällt somit aus (da zu langsam), oder?
Bleibt nur noch die PictureBox Lösung vom Link um den Inhalt schlagartig zu restaurieren?
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,

ich verstehe dich wirklich nicht. In dem Tutorial gibt es genau drei Beispiele. Um Animation geht es nicht und OnPaint ist für deinen Fall zu langsam, bleibt also genau eins übrig. Was gibt es also noch zu überlegen, wie es richtig sein könnte?

herbivore
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Also das letzte Beispiele dort, die PictureBox Methodik ist in meinen Fall die Lösung. (Und mein anderer Fehler war, dass ich PictureBox nicht in der Paint-Methode zeichnen sollte).
Falls ich was falsches von mir gegeben habe, dann bitte sagen.
Ok, ich versuch jetzt das Beispiel in ruhe zu analysieren.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
Klaus L.
myCSharp.de - Member



Dabei seit:
Beiträge: 14
Herkunft: Nahe KA

beantworten | zitieren | melden

Zitat von sharp
Hört sich aber zu kompliziert an
Ist es aber nicht. Es ist so einfach, wie ein 2D-Array vollzuschreiben. Mir ist gerade aufgefallen, dass es noch einfacher ist, als oben beschrieben, wenn du keine dynamische Veränderung brauchst. Du schreibst einfach ein Byte- oder Integer-Array voll und konvertiest das zu einer DIB. Letzteres ist im Grunde ein Befehl (in der API GetDiBits).

Was genau willst du den eigentlich machen? Geht es um ein Intensitätsdiagramm, also z.B. eine Temperaturverteilung?

Gruß,

Klaus
private Nachricht | Beiträge des Benutzers
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

Es ist die bekannte Mandelbrot Menge, je nach Benutzerinteraktion mit der GUI wird jedesmal ein neue Mandelbrotmenge Pixel für Pixel reingezeichnet.
Zitat
noch einfacher ist, als oben beschrieben, wenn du keine dynamische Veränderung brauchst
Also kommt diese Lösung bei mir nicht in Frage? (Bitte schreiben, wenn ich mich irre)
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
Klaus L.
myCSharp.de - Member



Dabei seit:
Beiträge: 14
Herkunft: Nahe KA

beantworten | zitieren | melden

Zitat von sharp
Es ist die bekannte Mandelbrot Menge, je nach Benutzerinteraktion mit der GUI wird jedesmal ein neue Mandelbrotmenge Pixel für Pixel reingezeichnet.
Zitat
noch einfacher ist, als oben beschrieben, wenn du keine dynamische Veränderung brauchst
Also kommt diese Lösung bei mir nicht in Frage?

Doch durchaus. Unter dynamisch verstehe ich dass die Bitmap z.B. per Maus rotiert werden soll, also dass eine Bitmap bei einer Aktion der Maus, oder was auch immer, so schnell folgen kann, dass die Zeit für die Darstellung nicht ins Gewicht fällt. Bei nem Mandlebrotbaum ist das natürlich nicht kritisch. Da reicht es, wenn die Bitmap innerhalb 10-100ms fertig ist, dh. der Mandelbrot-Algotrithmus braucht ja eh länger als die Darstellung.

Gruß,

Klaus
private Nachricht | Beiträge des Benutzers