TextOut

Gibt den Text in einem benutzerdefinierten Array (Puffer) aus und dann gibt das Ergebnis der Erfolg dieser Operation zurück. Dieses Array wird für die Erstellung von der grafischen Ressource verwendet.

bool  TextOut(
   const string       text,          // Textausgabe
   int                x,             // X Koordinate
   int                y,             // Y Koordinate
   uint               anchor,        // Bindungsmethode
   uint               &data[],       // Puffer für Ausgabe
   uint               width,         // Pufferbreite in Punkte
   uint               height,        // Pufferhöhe in Punkte
   uint               color,         // Textfarbe
   ENUM_COLOR_FORMAT  color_format   // Farbformat für Ausgabe
   );

Optionen

text

[in]  Der Text, der in den Puffer geschrieben wird. Nur einzeilige Textausgabe verfügbar ist.

x

[in]  X Koordinate des Ankerpunktes des ausgegebenen Textes.

y

[in]  Y Koordinate des Ankerpunktes des ausgegebenen Textes.

anchor

[In] Der Wert aus der Gruppe von neun vordefinierten Methoden der Position des Ankerpunktes des angezeigten Textes. Wird durch eine Kombination von zwei Flaggen gesetzt – die Flagge der horizontalen Textausrichtung und die Flagge der vertikalen Textausrichtung. Namen der Flaggen sind in Bemerkung verfügbar.

data[]

[in]  Der Puffer, in dem der Text ausgegeben wird. Dieser Puffer wird für die Erstellung von der grafischen Ressource verwendet.

width

[in]  Die Breite des Puffers in Punkte (Pixels).

height

[in]  Die Höhe des Puffers in Punkte (Pixels).

color

[in]  Textfarbe.

color_format

[in]  Farbformat wird durch einen Wert aus der Enumeration ENUM_COLOR_FORMAT angegeben.

Rückgabewert

Gibt bei Erfolg true zurück, ansonsten false.

Hinweis

Die Bindungsmethode, die durch Parameter anchor angegeben wird, ist eine Kombination von zwei Flaggen von der vertikalen und horizontalen Textausrichtung. Flagge der horizontalen Textausrichtung:

  • TA_LEFT - Ankerpunkt auf der linken Seite des Begrenzungsrahmens
  • TA_CENTER – Ankerpunkt ist horizontal in der Mitte des Begrenzungsrahmens
  • TA_RIGHT – Ankerpunkt auf der rechten Seite des Begrenzungsrahmens

Flagge der vertikalen Textausrichtung:

  • TA_TOP – Ankerpunkt auf der oberen Seite des Begrenzungsrahmens
  • TA_VCENTER – Ankerpunkt ist vertikal in der Mitte des Begrenzungsrahmens
  • TA_BOTTOM – Ankerpunkt auf der unteren Seite des Begrenzungsrahmens

 

Mögliche Kombinationen von Flaggen und die Bindungsmethoden, die durch die Flaggen gesetzt werden, sind im Bild angezeigt.
 

9 mögliche Wege der Bindung einer Textzeile

 

 

Beispiel:

//--- Breite und Höhe der Leinwand (canvas) (auf der die Zeichnung entsteht)
#define IMG_WIDTH  200
#define IMG_HEIGHT 200
//--- Vor dem Ausführen des Skripts ein Fenster mit Parametern anzeigen
#property script_show_inputs
//--- Möglichkeit zum Festlegen des Farbformats bereitstellen
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//--- Array (Puffer) für die Darstellung
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Erstellen des Objekts OBJ_BITMAP_LABEL zum Zeichnen    
   ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0);
//--- Name der grafischen Ressource für die Darstellung im CLOCK-Objekt festlegen
   ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG");
 
//--- Hilfsvariablen
   double a;            // Pfeilwinkel
   uint   nm=2700;      // Minuten-Zähler
   uint   nh=2700*12;   // Stunden-Zähler
   uint w,h; // Variablen zum Abrufen der Größe von Textzeichenfolgen 
   int    x,y;          // Variablen zur Berechnung der aktuellen Koordinaten des Ankerpunkts von Textzeichenfolgen 
 
//--- Drehen der Zeiger der Uhr in einer Endlosschleife, bis das Skript gestoppt wird
   while(!IsStopped())
     {
      //--- Löschen des Zeichenpuffer-Arrays der Uhr
      ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
      //--- Schriftart für die Darstellung der Zahlen auf dem Zifferblatt festlegen
      TextSetFont("Arial",-200,FW_EXTRABOLD,0);
      //--- Zeichnen des Zifferblatts
      for(int i=1;i<=12;i++)
        {
         //--- Größe der aktuellen Stunde auf dem Zifferblatt abrufen
         TextGetSize(string(i),w,h);
         //--- Berechnen der Koordinaten der aktuellen Stunde auf dem Zifferblatt
         a=-((i*300)%3600*M_PI)/1800.0;
         x=IMG_WIDTH/2-int(sin(a)*80+0.5+w/2);
         y=IMG_HEIGHT/2-int(cos(a)*80+0.5+h/2);
         //--- Ausgabe dieser Stunde auf das Zifferblatt im ExtImg[]-Puffer
         TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
        }
      //--- Schriftart für die Darstellung des Minutenzeigers festlegen      
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nm%3600));
      //--- Größe des Minutenzeigers abrufen
      TextGetSize("----->",w,h);
      //--- Berechnung der Koordinaten des Minutenzeigers auf dem Zifferblatt
      a=-(nm%3600*M_PI)/1800.0;
      x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
      y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
      //--- Ausgabe des Minutenzeigers auf dem Zifferblatt im Puffer ExtImg[]
      TextOut("----->",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- Schriftart für die Darstellung des Stundenzeigers festlegen      
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nh/12%3600));
      TextGetSize("==>",w,h);
      //--- Berechnung der Koordinaten des Stundenzeigers auf dem Zifferblatt
      a=-(nh/12%3600*M_PI)/1800.0;
      x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
      y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
      //--- Ausgabe des Stundenzeigers auf das Zifferblatt im Puffer ExtImg[]
      TextOut("==>",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- Aktualisierung der grafischen Ressource
      ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT,0,0,IMG_WIDTH,clr_format);
      //--- erzwungene Aktualisierung des Charts
      ChartRedraw();
 
      //--- Erhöhung der Stunden- und Minuten-Zähler
      nm+=60;
      nh+=60;
      //--- machen wir eine kurze Pause zwischen den Frames
      Sleep(10);
     }
//--- Am Ende des Skripts löschen wir das CLOCK-Objekt
   ObjectDelete(0,"CLOCK");
//---
  }

Sehen Sie auch

Ressourcen, ResourceCreate(), ResourceSave(), TextGetSize(), TextSetFont()