AGB  ·  Datenschutz  ·  Impressum  







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

'Visualissation'

Ein Thema von Nils_13 · begonnen am 18. Jun 2005 · letzter Beitrag vom 20. Jun 2005
 
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#23

Re: 'Visualissation'

  Alt 20. Jun 2005, 19:00
Bessere Variante (Antiflacker):

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
const
  MaxPeak = 32768; // sollte schon in BassDLLPlayer global def. sein
var
  p, TmpRight: integer;
  aRect, bRect: TRect;
begin
  // Bar's zeichnen / aktualisieren
  if BassDLLPlayer1.Status = sndPlaying then
  begin
    // Leinwandgrösse ermitteln
    aRect := PaintBox1.ClientRect;
    TmpRight := aRect.Right;
    
    // Hintergrund Style für Pinsel setzen
    PaintBox1.Canvas.Brush.Style := bsSolid;

    //--- Obere Hälfte - LeftPeak ---------------------------------
    aRect.Bottom := (aRect.Bottom div 2) - 1; //Obere Hälfte der PaintBox

    // Ein bischen Prozentrechnung (p {Prozent} = Peak ist wieviel % von MaxPeak)
    p := trunc((BassDLLPlayer1.LeftPeak / MaxPeak) * 100);
    aRect.Right := trunc((p * aRect.Right) / 100);
    // Zeichnen des Peak-Wertes
    PaintBox1.Canvas.Brush.Color := clRed; // <-
    PaintBox1.Canvas.FillRect(aRect); // <-
    // oder DrawGradient(PaintBox1.Canvas, aRect, True, [clYellow, clRed]);

    // Rechten Rest von PaintBox berechnen
    bRect := aRect;
    bRect.Right := TmpRight;
    bRect.Left := aRect.Right;
    // Zeichnen des rechten Rests in Black
    PaintBox1.Canvas.Brush.Color := clBlack;
    PaintBox1.Canvas.FillRect(bRect);
    //--- Untere Hälfte - RightPeak -------------------------------
    aRect.Right := TmpRight; // <----<<< diese Zeile fehlte noch <----<<<
    aRect.Top := aRect.Bottom + 3; // untere Hälfte der PaintBox 3 Px Abstand
    aRect.Bottom := (aRect.Bottom * 2) + 3; // es Fehlen ja noch 3 Px von oben

    // Ein bischen Prozentrechnung
    p := trunc((BassDLLPlayer1.RightPeak / MaxPeak) * 100);
    aRect.Right := trunc((p * aRect.Right) / 100);
    // Zeichnen des Peak Wertes
    PaintBox1.Canvas.Brush.Color := clRed; // <-
    PaintBox1.Canvas.FillRect(aRect); // <-
    // oder DrawGradient(PaintBox1.Canvas, aRect, True, [clYellow, clRed]);
    // Rechten Rest von PaintBox berechnen
    bRect := aRect;
    bRect.Right := TmpRight;
    bRect.Left := aRect.Right;
    // Zeichnen des rechten Rests in Black
    PaintBox1.Canvas.Brush.Color := clBlack;
    PaintBox1.Canvas.FillRect(bRect);
  end;
end;
Das Würde ich noch in eine extra Procedure auslagern.(Übersichtlicher)

Bitte verwende aussagekräftigere Namen PaintBox1 oder MyPaintBox auch wenn es mehr Arbeit beim Tippen macht, sonst verliert man nach einer Weile die Übersicht.
(…und die Leute im Forum wissen nicht was Du damit meinst.)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
 


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 22:41 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