Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Imageproblem (https://www.delphipraxis.net/215202-imageproblem.html)

juelin 26. Mai 2024 20:49

Imageproblem
 
Hallo ich bin es wieder,
ich schreibe gerade ein Programm, wo ich mit bass.dll einen Audiostrem von der Sounkkarte auswerte und in ein WAV-File schreibe.
Soweit funktioniert auch alles.
Das Wav-File wird erstellt und ist gut.
Nun will ich während der Aufnahme auch am Bildschirm die Audiofrequenz in einem Image anzeigen.
Als Inputstream ahbe ich
ChannelIR:=BASS_RecordStart(44100,2,0,@RecordingCa llback,nil);
In der Routine RecordingCallback, die ca alle 100ms aufgerufen wird
zeichne ich Linien in das Image. (MoveTo(X,Y) und LineTo(X,Y).
Mein Problem ist, das das am Bildschirm nur beim ersten mal zu sehen ist.
Das Programm kommt zwar alle 100ms in die Routine aber man sieht am Bildschirm nichts.
Obwohl ich am Ende der Zeichnung noch ein Image1.Repaint; und Image1.Refresh; aufrufe.
Habe schon SLEEP und Application.ProcessMessages eingebaut bringt aber auch nichts.
Hat da jemand eine Idee?
Danke und Gruß
Jürgen

TomyN 26. Mai 2024 21:09

AW: Imageproblem
 
Wird die Line wirklich gezeichnet (d.h. der entsprechende Programmteil wirklich angesprochen)?
Verstehe ich es richtig, dass die Anzeige gelöscht wird (und das auch beim 2 ... Aufruf passiert)?
Liegen X und Y im Bild?

Ansonsten noch zwei Anmerkungen:
a) Ich würde im Callback möglichst wenig machen, am besten nur eine Nachricht schicken.
b) Ich würde immer auf eine 'offscreen' Bitmap zeichnen und dann diese dann komplett ausgeben.

jaenicke 26. Mai 2024 21:15

AW: Imageproblem
 
In der Callback-Routine bist du sehr wahrscheinlich in einem anderen Thread. Dementsprechend darfst du dort nicht auf visuelle Komponenten zugreifen.

juelin 26. Mai 2024 22:33

AW: Imageproblem
 
Ja die entsprechenden Befehle für das Image (MoveTO und LineTo) werden ausgefüht.
Neun der Bildschirm (Image wird nicht gelöscht, sondern bleibt einfach nur stehen.

himitsu 26. Mai 2024 22:46

AW: Imageproblem
 
Worauf zeichnest du, das richtige Canvas?

Und dein Zeichnen läuft auch NICHT, NIEMALS, GARNICHT in einem Thread :!:
(jedenfalls nicht ohne entsprechende Absicherung)

juelin 27. Mai 2024 12:16

AW: Imageproblem
 
hallo himitsu,
genau das war es.
Ich starte jeztz im BASS einen teimer.
In dem Timer zeichne ich das Image.
jetzt klappt es.
Danke und Gruß
Jürgen

jaenicke 27. Mai 2024 13:35

AW: Imageproblem
 
Wozu ein Timer? Schick dir doch einfach eine Windows Message. Da kannst du die Daten evtl. gleich mitschicken und es wird unmittelbar abgearbeitet, unabhängig von der Timerfrequenz.

Ein Timer geht aber natürlich auch. Wenn dessen Frequenz niedriger ist, spart das auch Ressourcen.

TomyN 28. Mai 2024 06:59

AW: Imageproblem
 
Zitat:

Zitat von jaenicke (Beitrag 1537194)
Ein Timer geht aber natürlich auch. Wenn dessen Frequenz niedriger ist, spart das auch Ressourcen.

In diesem Fall sollte man ihn aber nicht in jedem Callback neu enablen :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz