procedure Histogramm(Px_werte,Panzahl_werte : TStringList; Py_max : Integer);
var i,z,z2,Py_laenge,y_einteilung,y_beschriftung,Flanke : Integer;
begin
Py_laenge := 300;
//Y-Achsenlänge in px
//y-Achse einteilen
while Py_max
mod 10 <> 0
do
Inc(Py_max);
y_einteilung := 30;
//Abstand von einem Y-Wert zum nächsten in px
y_beschriftung := round(Py_max/10);
//Y-Achse mit Beschriftung zeichnen
Form3.image1.Canvas.TextOut(28,350,'
0');
Form3.image1.Canvas.MoveTo(50,350);
//y-Achsen Startpunkt
Form3.image1.Canvas.LineTo(50,350-Py_laenge);
//y-Achse
z2 := 1;
i := 350;
repeat
if i<350
then
begin
Form3.image1.Canvas.TextOut(28,i,IntToStr(y_beschriftung*z2));
Form3.image1.Canvas.MoveTo(50,i);
Form3.image1.Canvas.Pen.Style := psDot;
//Gepunktete Linie
Form3.image1.Canvas.LineTo(50+(50*Px_werte.Count+100),i);
Form3.image1.Canvas.Pen.Style := psSolid;
Inc(z2);
end;
dec(i,y_einteilung)
until i < 350-Py_laenge;
//X-Achse mit Beschriftung zeichnen
Form3.image1.Canvas.MoveTo(50,350);
//x-Achsen Startpunkt
i := 100;
z := 0;
repeat
Form3.image1.Canvas.LineTo(i,350);
//x-Achse
if z < Px_werte.Count
then
begin
Flanke := 350-(round((y_einteilung/y_beschriftung)*(StrToInt(Panzahl_werte[z]))));
Form3.image1.Canvas.LineTo(i,Flanke);
//Histokramm positive Flanke
Form3.image1.Canvas.LineTo(i+51,Flanke);
//Waagerechte verbindung zw Flanken
Form3.image1.Canvas.LineTo(i+51,350);
//Histokramm negative Flanke
Form3.image1.Canvas.TextOut(i,355,Px_werte[z]);
// Füllung für Histogrammbalken
Form3.Image1.Canvas.Brush.Color := clblue;
Form3.Image1.Canvas.Rectangle(i,Flanke,i+51,350);
Form3.Image1.Canvas.Brush.Color := clwhite;
end;
Form3.image1.Canvas.MoveTo(i,350);
Inc(i,50);
inc(z);
until z = Px_werte.Count+2;
end;