AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Imageproblem

Ein Thema von juelin · begonnen am 26. Mai 2024 · letzter Beitrag vom 28. Mai 2024
Antwort Antwort
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#1

Imageproblem

  Alt 26. Mai 2024, 20:49
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
Jürgen Linder
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
252 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Imageproblem

  Alt 26. Mai 2024, 21:09
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.
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.647 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Imageproblem

  Alt 26. Mai 2024, 21:15
In der Callback-Routine bist du sehr wahrscheinlich in einem anderen Thread. Dementsprechend darfst du dort nicht auf visuelle Komponenten zugreifen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#4

AW: Imageproblem

  Alt 26. Mai 2024, 22:33
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.
Jürgen Linder
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Imageproblem

  Alt 26. Mai 2024, 22:46
Worauf zeichnest du, das richtige Canvas?

Und dein Zeichnen läuft auch NICHT, NIEMALS, GARNICHT in einem Thread
(jedenfalls nicht ohne entsprechende Absicherung)
$2B or not $2B
  Mit Zitat antworten Zitat
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Imageproblem

  Alt 27. Mai 2024, 12:16
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
Jürgen Linder
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.647 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Imageproblem

  Alt 27. Mai 2024, 13:35
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
252 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Imageproblem

  Alt 28. Mai 2024, 06:59
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
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Alt 8. Sep 2024, 07:28     Erstellt von koni167
Dieser Beitrag wurde von TBx gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz