C++ Builder Snippets  


Texte vertikal (oder im beliebigen Winkel) ausgeben:
 

Mit Hilfe der API-Funktion CreateFont() kann der Text im beliebiegen Winkel ausgegeben werden. Der Ausgabewinkel wird im 4. Parameter in 0,1 Grad Schritten festgelegt. Im folgenden Beispiel wird der Text direkt auf Canvas des Formulars oder des Druckers gezeichnet:


//----------------------------------------------------------
// Funktion AdvTextOut() gibt den String slString auf 
// Canvas pCanvas im vorgegebenem Winkel aus:
//----------------------------------------------------------
// Übergabeparameter:
//
// AnsiString slString -> der auszugebende Text
// TCanvas* pCanvas    -> Ziel-Canvas (z.B. Form1->Canvas, 
//                                     Printer()->Canvas)
// int ilXPos, ilYPos  -> X- und Y-Koordinaten in Pixel
// double dlHeightInMm -> Schrifthöhe in mm (!)
// double dlAngle      -> Winkel in Grad
//----------------------------------------------------------
void AdvTextOut(AnsiString slString, TCanvas* pCanvas,
                int ilXPos, int ilYPos,
                double dlHeightInMm, double dlAngle)
{
  // Schrifthöhe aus mm in Pixel konvertieren:
  int ilFontHeight = Ceil(double(dlHeightInMm * double(
    GetDeviceCaps(pCanvas->Handle, LOGPIXELSY))/25.4));

  // Schrift im vorgegebenen Winkel erzeugen:
  HFONT hFont = CreateFont(ilFontHeight, 0, dlAngle*10,
    dlAngle*10, FW_BOLD, false, false, false,
    DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY , DEFAULT_PITCH | FF_DONTCARE,
    pCanvas->Font->Name.c_str());

  // Erzeugte Schrift dem Canvas zuweisen
  SelectObject(pCanvas->Handle, hFont);

  // Text zeichnen:
  pCanvas->TextOut(ilXPos, ilYPos, slString);

  // Schrift freigeben
  DeleteObject(hFont);
}

  Download BCB5
Projekt-Quellcode
Download
Demo-Exe

© '99-2001 by S. Kreutzmann