In Deiner Funktion void _Upper_Lower_Line
zu Begin einfügen:
Code:
// === get the subwin height in pixels
int SubWinHeightPix=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,ChartWindowFind());
//Print(" Subwin height in pix: ",(int)SubWinHeightPix);
// === devide the height, so we get the equivalent for 80|20
int Equiv80=(int)MathRound( 80*SubWinHeightPix/100 );
int Equiv20=(int)MathRound( 20*SubWinHeightPix/100 );
Damit kriegt Du in etwa das Pixelverhältnis für die Linien.
Dann bei den Labeln ändern:
Code:
//ObjectSet("UPPERTEXT",OBJPROP_XDISTANCE,5);
//ObjectSet("UPPERTEXT",OBJPROP_YDISTANCE,25);
ObjectSetInteger(0,"UPPERTEXT",OBJPROP_CORNER,CORNER_RIGHT_LOWER); //ReferenceWindowEdge
ObjectSetInteger(0,"UPPERTEXT",OBJPROP_ANCHOR,CORNER_LEFT_UPPER); //Example
ObjectSet("UPPERTEXT",OBJPROP_XDISTANCE,90); //hardcoded: 90
ObjectSetInteger(0,"UPPERTEXT",OBJPROP_YDISTANCE,Equiv80);
//ObjectSet("LOWERTEXT",OBJPROP_XDISTANCE,5);
//ObjectSet("LOWERTEXT",OBJPROP_YDISTANCE,175);
ObjectSetInteger(0,"LOWERTEXT",OBJPROP_CORNER,CORNER_RIGHT_LOWER); //ReferenceWindowEdge
ObjectSetInteger(0,"LOWERTEXT",OBJPROP_ANCHOR,CORNER_LEFT_UPPER); //Example
ObjectSetInteger(0,"LOWERTEXT",OBJPROP_YDISTANCE,Equiv20);
ObjectSet("LOWERTEXT",OBJPROP_XDISTANCE,72); //hardcoded: 72
Da Du Font und Fontgröße fest hast, kannst Du die XDISTANCE auch fest lassen.
Ich habe die Zahlen hier mal an Deine Werte angepaßt. Komplizierter wird es, wenn die Fontgröße und evtl. sogar noch der Font selber vom Benutzer festzulegen ist, dann sind einige andere Verhältnisrechnungen fällig.
Kannst Du als Vorlage für Tests nehmen. AVT