Hallo,
ich kann nicht mehr vor lauter grübeln
Vielleicht ist es für jemand einfach
Code:
var tw,fw,breite,i : integer;
fw := 0;
For i := 0 To n Do // n kann immer anders sein
begin
tw := ...Canvas.TextWidth(daten[i]);
if tw > fw then fw := tw;
end;
breite := fw;
So gehe ich eine Datenliste durch und ermittle die größte Textbreite. Diese steht dann in der Variable "breite". Sagen wir mal, ich will damit erreichen das jede Zeile (Datenliste) komplett angezeigt wird. Dies geht, da ich ja die breiteste Breite habe.
Nun will ich aber erreichen, dass ich sicherstellen möchte, dass z.B. 70% komplett angezeigt werden können und die anderen werden dann später abgeschnitten. Also ich kann ja nicht (mit obigen Code) so eine normale Prozentberechnung machen, sprich 70% = breite / 100 * 70.
Anderes Beispiel dazu (siehe Grafik).
Die Linien sind mal schlanke Menschen (*grins) und 70% (oder auch 55%, 20%, 90%) sollen ohne sich bücken zu müssen durch ein Tunnel laufen können. Alle anderen werden abgesägt, bevor sie den Tunnel betreten.
Nun sind 70% ja immer anders. Je nach Inhalt der Daten, sprich um die Grafik zu nehmen... sollten es noch 1000 weitere kleine Linien (die letzten in der Grafik) geben, dann würden bei 70% mehrere große Linien wegfallen. Also wie hoch baut man den Tunnel, damit 70% locker durchpassen?
Ist echt schwer zu erklären.
Michael