TLabel vertikal



  • Ich glaub es fast nicht, aber ich finde nirgedswo eine Eigenschaft von TLabel welche es mir ermöglicht den Text vertikal darzustellen.
    Also nicht die Buchstaben übereinander sondern einfach das Label um 90° drehen.

    Das muss doch möglich sein?

    Gruss
    Dani



  • Du kannst Text in jeder beliebigen Ausrichtung auf ein Canvas-Objekt zeichnen. Ich glaube auf der Homepage von Bytes and more ist ein Code-Beispiel. Das funktioniert allerdings nicht bei allen Schriftarten!!!



  • So mache ich das:

    //------------------------------------------------------------------------------
    // AdvTextRect():
    //
    // Description: draws a string on a given canvas in a specified direction
    // Parameters:  String to be drawn, Canvas, Clipping rectangle, x and Y position, Angle
    // Returns:     void
    //------------------------------------------------------------------------------
    void AdvTextRect(AnsiString str, TCanvas *pCanvas, TRect R, int X, int Y, double Angle)
    {
      int fontweight;
      DWORD fontitalic, fontunderline, fontstrikeout;
      // create font with specified angle
      // bold?
      if (pCanvas->Font->Style.Contains(fsBold))
        fontweight = FW_BOLD;
      else
        fontweight = FW_NORMAL;
      // italic?
      if (pCanvas->Font->Style.Contains(fsItalic))
        fontitalic = true;
      else
        fontitalic = false;
      // underline?
      if (pCanvas->Font->Style.Contains(fsUnderline))
        fontunderline = true;
      else
        fontunderline = false;
      // strike out?
      if (pCanvas->Font->Style.Contains(fsStrikeOut))
        fontstrikeout = true;
      else
        fontstrikeout = false;
      HFONT hFont = CreateFont(pCanvas->Font->Height, 0, Angle*10, Angle*10, fontweight,
                        fontitalic, fontunderline, fontstrikeout, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
                        CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
                        pCanvas->Font->Name.c_str());
      // assign created font to canvas
      SelectObject(pCanvas->Handle, hFont);
      // draw text on canvas
      pCanvas->TextRect(R, X, Y, str);
      // free font
      DeleteObject(hFont);
    }
    


  • Hinweis: das Ganze funktioniert nur mit TrueType-Schriftarten (*.ttf).


Anmelden zum Antworten