TChart Beispiel
-
Hallo,
Das Chart hat auch ein Canvas welches du über die gleichnamige Eigenschaft bekommst. Dies ist bei TChart vom Typ TCanvas3D welches massenhaft Funktionen zum Zeichnen bietet. Für dich interessant ist da TextOut welche einen Text auf dem Chart ausgeben kann. etwa so:
TCanvas3D* canvas = chart->Canvas; canvas->TextOut(xpos, ypos, "Text");
-
Hallo,
mein Code sieht jetzt so aus:
if (mlk1.mZellzahl[j]>600) { TCanvas3D* canvas = Chart1->Canvas; canvas->TextOut(j, StrToFloat(mlk1.mZellzahl[j]), "Maximum"); }
Er zeigt aber Maximum nicht an, fehlt das noch irgendetwas?
LG
Eliza
-
xpos und ypos sind die Koordinaten des Canvas. Das hat nichts mit den Werten deiner Serie zu tun. Nimm da einfach mal 100 oder so als Wert.
Außerdem muss diese Zeile in den OnAfterDraw-Event des Charts eingebaut werden damit beim Neuzeichnen nicht alles wiede überzeichnet wird.
-
Hallo,
xpos und ypos sind die Koordinaten des Canvas. Das hat nichts mit den Werten deiner Serie zu tun. Nimm da einfach mal 100 oder so als Wert.
Aber es soll doch genau an der Stelle stehen wo das Maximum ist, dafür brauche ich doch die x,y-Werte der Serie?
-
Ich würde einfach die Marks einschalten. Dadurch wird bei jedem Datenpunkt
ein kleines Fenster mit dem Maximum eingeblendet.Chart->Series[0]->Marks->Visible = true;
-
Hallo,
das mit den Marks ist eine gute Idee, aber gibt es auch eine Möglichkeit den Wert anzeigen zu lassen, wenn er so hoch ist, dass er über die y-Achse hinausgeht.
Zb. meine y-Achse geht bis 600, ich habe aber einen Wert im Diagramm der bis 999 geht, gibt es da dann eine Möglichkeit anzuzeigen, dass der Wert 999 ist?
LG
Eliza
-
*Eliza schrieb:
Aber es soll doch genau an der Stelle stehen wo das Maximum ist, dafür brauche ich doch die x,y-Werte der Serie?
Dafür hat TChartSeries die Funktionen CalcXPosValue und CalcYPosValue. Die geben dir die Bildschirmcoordinaten in Pixel zurück die du zum Zeichnen brauchst.
-
Wenn ich so was machen müsste, dann würde ich eine zweite Datenreihe hinzufügen, die nur als eine waagerechte Linie dargestellt wird. Diese Linie würde dein Maximum sein. Dann kannst du sehen, welche Punkte deiner anderen Datenreihe diese Linie überschreiten.
Das ist die einfachste Lösung, die mir einfällt.
-
Hallo,
weiß jemand wie man bei xy Werten Punkte setzt.
ich kann es im Diagramm bearbeiten nicht hinbekommen geht es vielleicht "händisch" irgendwie mit
Chart1->Series[0]->....LG
Eliza
-
Chart1->Series[0]->Pointer->Visible = true;
-
Hallo Lienea,
das habe ich schon probiert, aber da kommt die Fehlermeldung:
[C++ Fehler] UnitGraphik2.cpp(67): E2316 'Pointer' ist kein Element von 'TChartSeries'
LG
Eliza
-
Versuchs so
TCustomSeries* ser = dynamic_cast<TCustomSeries*>(Chart1->Series[0]); if( ser) ser->Pointer->Visible = true;
TChartSeries hat die Eigenschaft Pointer noch nicht. Die gibt es erst ab TCustomSeries also muss man dahin casten. Nach TLineSeries würde auch gehen sofern es eine ist (was ich hier aber vermute).
@Eliza
Bei weiteren Fragen würde ich langsam mal empfehlen einen neuen Thread aufzumachen, da sich das Ganze schon recht weit von der Ursprungsfrage entfernt hat.
-
Danke für die Antwort Braunstein, dass Problem habe ich inzwischen lösen können,
ich weiß nicht, ob es von den Moderatoren erwünscht ist einen neuen Thread aufzumachen, wenn es immernoch um die gleiche Komponente geht.Mir persönlich würde es aber nichts ausmachen.
LG
Eliza