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:

//--- Die Breite und Höhe der Leinwand (Leinwand, auf der wir zeichnen)
#define IMG_WIDTH  200
#define IMG_HEIGHT 200
//--- bevor das Skript zu starten, zeigen wir ein Fenster mit Parameter
#property script_show_inputs
//--- Möglichkeit Farbe anzugeben
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//--- Array (Puffer) zu zeichnen
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- wir erstellen das Objekt OBJ_BITMAP_LABEL zu zeichnen    
   ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0);
//--- wir geben den Namen der Ressource für Zeichnung im Objekt CLOCK an
   ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG");
 
//--- Hilfsvariable
   double a;            // Winkel des Pfeils
   uint   nm=2700;      // Minutenzähler
   uint   nh=2700*12;   // Stundenzähler
   uint   w,h;          // Variable für Größe der Textzeilen 
   int    x,y;          // Variable für Berechnung der aktuellen Ankerpunktekoordinaten der Textzeilen
 
//--- Wir drehen die Uhr in einer Endlosschleife, da das Skript nicht aufgehört wird
   while(!IsStopped())
     {
      //--- Inhalt des Arrays von Uhr-Zeichnung Puffer löschen
      ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
      //--- Schriftart für Zahlen auf dem Zifferblatt angeben
      TextSetFont("Arial",-200,FW_EXTRABOLD,0);
      //--- Zifferblatt zeichnen
      for(int i=1;i<=12;i++)
        {
         //--- Größe der aktuellen Stunde auf dem Zifferblatt erhalten
         TextGetSize(string(i),w,h);
         //--- Koordinaten der aktuellen Stunde auf dem Zifferblatt berechnen
         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);
         //--- diese Stunde auf dem Zifferblatt in Puffer ExtImg[] ausgeben
         TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
        }
      //--- Jetzt geben wir eine Schriftart für den Minutenzeiger an
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nm%3600));
      //--- Größe des Minutenzeigers erhalten
      TextGetSize("----->",w,h);
      //--- Koordinaten des Minutenzeigers auf dem Zifferblatt berechnen
      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);
      //--- Minutenzeiger auf dem Zifferblatt in Puffer ExtImg[] ausgeben
      TextOut("----->",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- Jetzt geben wir eine Schriftart für den Stundenzeiger an
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nh/12%3600));
      TextGetSize("==>",w,h);
      //--- Koordinaten des Stundenzeigers auf dem Zifferblatt berechnen
      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);
      //--- Stundenzeiger auf dem Zifferblatt in Puffer ExtImg[] ausgeben
      TextOut("==>",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- Grafikressource aktualisieren
      ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT,0,0,IMG_WIDTH,clr_format);
      //--- Zwangsaktualisierung des Charts
      ChartRedraw();
 
      //--- Die Erhöhung der Stunden- und Minutenzähler
      nm+=60;
      nh+=60;
      //--- Machen wir eine kurze Pause zwischen den Bildern
      Sleep(10);
     }
//--- Objekt CLOCK nach dem Ausschaltung des Skripts löschen
   ObjectDelete(0,"CLOCK");
//---
  }

Sehen Sie auch

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