![]() |
Prozentangabe zu einer Visualisation
Hi,
ich habe eine Visualisation. Sie wird in zwi Balken dargestellt (left peak, right peak). Ich möchte für den left-Peak eine Prozentangabe in einem Label darstellen und in einem anderem Label auch noch den right-Peak.
Delphi-Quellcode:
Die Methode einfach
procedure TForm1.visTimer(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 = Playing then begin if IsIconic(Application.Handle) then Exit; aRect := PaintBox1.ClientRect; TmpRight := aRect.Right; PaintBox1.Canvas.Brush.Style := bsSolid; //--- Obere Hälfte - LeftPeak --------------------------------- aRect.Bottom := (aRect.Bottom div 2) - 1; // Ein bischen Prozentrechnung p := trunc((BassDLLPlayer1.RightPeak / MaxPeak) * 100); aRect.Right := trunc((p * aRect.Right) / 100); // Zeichnen DrawGradient DrawGradient(PaintBox1.Canvas, aRect, True, [clYellow, clRed]); // Rechten Rest von PaintBox berechnen bRect := aRect; bRect.Right := TmpRight; bRect.Left := aRect.Right; // Zeichnen PaintBox1.Canvas.Brush.Color := clBlack; PaintBox1.Canvas.FillRect(bRect); //--- Untere Hälfte - RightPeak ------------------------------- aRect.Right := TmpRight; // aRect.Top := aRect.Bottom + 1; //Untere Hälfte der PaintBox 3 Px Abstand aRect.Bottom := aRect.Bottom * 2 + 0; // Ein bischen Prozentrechnung p := trunc((BassDLLPlayer1.LeftPeak / MaxPeak) * 100); aRect.Right := trunc((p * aRect.Right) / 100); // Zeichnen DrawGradient DrawGradient(PaintBox1.Canvas, aRect, True, [clYellow, clRed]); // Rechten Rest von PaintBox berechnen bRect := aRect; bRect.Right := TmpRight; bRect.Left := aRect.Right; // Zeichnen PaintBox1.Canvas.Brush.Color := clBlack; PaintBox1.Canvas.FillRect(bRect); end else begin PaintBox1.Canvas.Brush := Panel1.Parent.Brush; PaintBox1.Canvas.FillRect(PaintBox1.ClientRect); end; end;
Delphi-Quellcode:
zu nehmen macht doch keinen Sinn, oder ? Denn da ist es ja vom Width-Wert der PaintBox abhängig, da sich ja das rechteck bis zum rechten Rand der PaintBox bewegt.
lpeak.Caption := IntToStr(aRect.Right) + '%';
|
Re: Prozentangabe zu einer Visualisation
Hallo Nils,
wenn ich das richtig sehe, dann berechnest du doch schon den Prozentwert p, den du im Label anzeigen willst. aRect.Right ist ja gar kein Prozentwert mehr, sondern der entsprechende Abschnitt auf der Breite von aRect.
Delphi-Quellcode:
Grüße vom marabu
// Ein bischen Prozentrechnung
p := trunc((BassDLLPlayer1.RightPeak / MaxPeak) * 100); aRect.Right := trunc((p * aRect.Right) / 100); |
Re: Prozentangabe zu einer Visualisation
thx.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 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