Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Lineare Funktionen (https://www.delphipraxis.net/166963-lineare-funktionen.html)

galoru 7. Mär 2012 17:21

Lineare Funktionen
 
Nabend Leute,

ich habe ein kleines Problem und hoffe, dass ihr mir weiterhelfen könnt.
Ich habe ein kleines Programm geschrieben, mit dem die Anzahl der Stimmen von Personen etc. in einem Säulendiagramm ausgegeben werden soll. Irgendwie werden die Balken zu groß oder zu klein.


Paintbox : 361x361
Ich habe bei x=20 angefangen und x=341 aufgehört.
Bei y=66 angefangen und y=331 aufgehört.

Hoffe ihr könnt mir weiterhelfen, da ich schon viel versucht habe und nichts funktionierte.

lg

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,f :single;


begin



if (Edit1.Text='') or(edit2.text='') or (edit3.Text='')
or (edit4.text='') then showmessage ('Bitte Werte eingeben!') else begin

with paintbox1.Canvas do begin

pen.width:=2;


moveto(20,66);
lineto(20,331);


lineto(341,331);
moveto(13,265);
lineto(20,265);
moveto(13,199);
lineto(20,199);
moveto(13,133);
lineto(20,133);
moveto(13,66);
lineto(20,66);

Textout(1,35,'Stimmen');

a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);
d:=strtofloat(edit4.Text);



e:=a+b+c+d;
f:=(e)*0.5;

textout(0,193,(floattostr(f)));
textout(0,60,(floattostr(e)));





brush.color:=clred;
fillrect(rect(60,330,100,round (260-(a))));

brush.color:=clblue;
fillrect(rect(140,330,180,round (260-(b))));

brush.color:=clyellow;
fillrect(rect(220,330,260,round (260-(c))));

brush.color:=clgreen;
fillrect(rect(300,330,340,round (260-(d))));













end;
end;
end;




procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var t: integer;
begin

PaintBox1.Invalidate;



end;

end.

DeddyH 7. Mär 2012 17:25

AW: Lineare Funktionen
 
Benutze doch bitte Delphi-Tags, dann ist der Code viel besser zu lesen (entweder über den "Helm" im Beitragseditor oder mit
Code:
[delphi]Code[/delphi]
). Und zu Deinem Problem: meinst Du jetzt Prozentrechnung, oder wie genau sollen die Säulen dargestellt werden?

galoru 7. Mär 2012 17:40

AW: Lineare Funktionen
 
Ok danke für den Tipp ;)
Hier mein Problem, ach ja bitte nicht bei den Bezeichnungen wundern ^^
http://s7.directupload.net/file/d/2822/swkx3m7u_jpg.htm

Jens01 7. Mär 2012 17:48

AW: Lineare Funktionen
 
Du kannst nicht einfach die Werte einfach von der Pixelhöhe der Balken abziehen. Du musst sie in Relation setzen.

so ähnlich:
BalkenhöhePixel = Wert * Pixel_Y-Achse/MaxWert_Y-Achse
(bitte Formel ggf überprüfen)

DeddyH 7. Mär 2012 17:51

AW: Lineare Funktionen
 
Das sollte sich doch mit einfacher Prozentrechnung hinbekommen lassen. Die 130 entsprechen dann 100 %, die 23 wäre demnach 17,7 % usw. Nun nimmst Du die Anzahl der Pixel von der unteren zur oberen Kante, das entspricht dann wiederum 100 %. Wenn Du nun davon 17,7 % errechnest, weißt Du, wie hoch der Balken werden muss. Bei dem ganzen aber bitte mit Gleitkommazahlen rechnen und erst bei der Ausgabe (= Zeichnen) runden, sonst geht das wahrscheinlich in die Hose.

[edit] BTW: Man kann auch an seinen Beitrag Grafiken anhängen, dann bleiben sie uns erhalten. [/edit]

galoru 7. Mär 2012 17:57

AW: Lineare Funktionen
 
Ja und wenn ich statt 23, 376 habe? Das sind ja keine 17,7% mehr davon?
Also so :
Delphi-Quellcode:
fillrect(rect(60,330,100,round ((a*100/(a*100/e)))));
?
Ich checks grad gar nicht ,sorry.

DeddyH 7. Mär 2012 18:03

AW: Lineare Funktionen
 
Dann ändert sich doch auch die Anzahl, oder nicht?

galoru 7. Mär 2012 18:06

AW: Lineare Funktionen
 
Ja die Anzahl ändert sich ja , trotzdem versteh ich nicht genau was du mit de Pixeln von der unteren bis zur oberen Kante meinst.
Die Pixel von dem Balken?

DeddyH 7. Mär 2012 18:07

AW: Lineare Funktionen
 
Ist das Diagramm nicht immer gleich hoch?

galoru 7. Mär 2012 18:13

AW: Lineare Funktionen
 
Da Diagramm an sich ist immer gleich hoch, nur die Verteilung der Stimmen ändert sich ja im Verhältnis zur Gesamtanzahl.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 Uhr.
Seite 1 von 2  1 2      

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