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).