Thema: Neues Projekt
Einzelnen Beitrag anzeigen
  #3 (permalink)  
Alt 02.12.21
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

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