- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: Zeichenroutine dauert zu lange

  1. #11
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Zitiere mich selbst ungern, aber :

    Zitat Zitat von ePyx Beitrag anzeigen
    Wenn du mit der WinAPI arbeitest, solltes du nicht direkt auf die Ausgabe zeichnen, sondern in eine Bitmap. Anschließend via BitBlt die BitMap direkt auf den Zeichenkontext der Anzeige kopieren.
    Mal einfach in deinem Programm eine Bitmap und die stellst du beim Eintreffen der WM_PAINT-Message dar. Das wird, auch wenn du die Bitmap nicht in einem anderen Thread aktualisierst, wesentlich schneller gehen, als dein jetziger Ansatz.
    Grüße,
    Daniel

  2. #12
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    Ja, auch das mache ich bereits, das funktioniert auch ganz gut, obwohl ich das eigentlich gemacht hatte,
    damit das ganze nicht mehr flackert.
    Aber wenn ich zum Beispiel 250000 Punkte zeichne, dann dauert das fast eine Sekunde, das muss doch irgendwie schneller gehen.

  3. #13
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Naja wie gesagt, dass ganze sollte ausgelagert werden. Dein Programm erzeugt ja einen Hauptthread, also dein Hauptprogramm. Dieser kann Daten nur sequentiell abarbeiten. Also wird er entweder auf das Ausgabegerät Zeichnen ( also Bitmap auf Gerätekontext) oder die Daten in deine Bitmap zeichnen. Aber er wird nie beides machen.

    Deshalb werden solche Sachen immer in separate Threads ausgelagert. Die Teilen sich in C einen Zeiger auf die Daten, der Worker-Thread ( der die Daten verarbeitet und deine Bitmap aktualisiert), muss dem Thread der grafischen Oberfläche ( GUI ) signalisieren, dass neue Daten da sind und die Bitmap fertig ist. Letzteres ist nötig, damit nicht beide auf die Daten zugreifen und es zu keiner Speicherzugriffsverletzung kommt (Stichwort Mutex oder Semaphore).

    Dann brauchst du sozusagen nur das "Ich habe fertig"-Flag beim Eintreffen der WM_PAINT-Message abfragen und die Bitmap nur dann neuzeichnen. Ein weiterer aber aufwendigerer Weg ist nur die Punkte deiner Bitmap zu aktualisieren, die sich auch wirklich geändert haben.
    Grüße,
    Daniel

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Simulation dauert extrem lang! wiso?
    Von hunni im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 17
    Letzter Beitrag: 05.10.2008, 21:06
  2. Selbsttest dauert zu lange [gelöst]
    Von paddycasy im Forum Asuro
    Antworten: 10
    Letzter Beitrag: 05.08.2006, 15:41
  3. Getrc5 dauert zu lange -> Empfang über externen Interrupt
    Von Dane im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 17.03.2006, 12:57
  4. speichern auf internen EEprom dauert sehr lange
    Von Olle_Filzlaus im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 17
    Letzter Beitrag: 12.12.2005, 11:31
  5. Wie lange dauert die Bestätigung von MCS-Elecronics?
    Von raptor_79 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 11
    Letzter Beitrag: 30.11.2005, 17:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests