Hallo,
ich stehe (wie immer
) etwas auf dem Schlauch.
Ich möchte eine
analoge VU-Meter Komponente entwickeln und komme
mit der logarithmischen Skale nicht weiter.
Als Basis für die Berechnung beziehe ich micht auf
05_04_logarithmische_skalen_AB.pdf
Nur das Ergebniss ist nicht so wie erwartet
Für die Darstellung der logarithmischen Skale verwender ich folgende Procedure
Delphi-Quellcode:
...
procedure PainLogScale(aRect : TRect; aMax : Integer);
var
I,
L,
X : Integer;
U, V: Extended;
Str : String;
begin
with Canvas do
begin
FLineWidth := aRect.Right - aRect.Left;
L := aRect.Left;
I := 0;
while I <= (aMax div 10) do
begin
MoveTo(L, aRect.Bottom);
LineTo(L, aRect.Bottom - 10);
Str := Format('%d', [Round(I*10)]);
X := L - (TextWidth(Str) div 2);
if (I = 0) or (I > 1) then
TextOut(X, aRect.Bottom - (TextHeight('Wy') + 10), Str);
Inc(I);
U := Log10(I);
V := FLineWidth * U;
DoLogEvent(X, U, V);
L := Trunc(V);
end;
end;
end;
...
Wie man in der angehängten Grafik unschwer erkennen kann, sind 100% nicht 100% und ich weiß nicht warum
.
Die Demo zum Scrennshot liegt bei.
Hat jemand einen Tipp?