Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Prozentangabe zu einer Visualisation (https://www.delphipraxis.net/55529-prozentangabe-zu-einer-visualisation.html)

Nils_13 22. Okt 2005 16:37


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:
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;
Die Methode einfach
Delphi-Quellcode:
    lpeak.Caption := IntToStr(aRect.Right) + '%';
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.

marabu 22. Okt 2005 16:45

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:
// Ein bischen Prozentrechnung
p := trunc((BassDLLPlayer1.RightPeak / MaxPeak) * 100);
aRect.Right := trunc((p * aRect.Right) / 100);
Grüße vom marabu

Nils_13 23. Okt 2005 18:51

Re: Prozentangabe zu einer Visualisation
 
thx.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 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