![]() |
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 |
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. |
AW: Imageproblem
In der Callback-Routine bist du sehr wahrscheinlich in einem anderen Thread. Dementsprechend darfst du dort nicht auf visuelle Komponenten zugreifen.
|
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. |
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) |
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 |
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. |
AW: Imageproblem
Zitat:
|
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