Feb 142008
 

Simple way to rotate a piece of text is to use a font object… Here is a sample which does this…

void CSomeDlg::OnPaint()
{    
  CPaintDC dc(this);

  // Get existing dlg font    
  CFont NewFont;     
  LOGFONT lgFnt = { 0 };     
  GetFont()->GetLogFont(&lgFnt);

  // Modify this existing font //

  // Face name is important, some font's like MS Sans Serif doesn't work
  strcpy( lgFnt.lfFaceName, "Arial" );

  // Give rotation as multiples of 10, so rotation will be 90 degrees
  lgFnt.lfOrientation = 900;
  lgFnt.lfEscapement =  900;

  // Create a font from this log font     
  VERIFY( NewFont.CreateFontIndirect( &lgFnt ));

  // Save this DC    
  const int DcRestorePoint = dc.SaveDC();      
  dc.SetBkMode( TRANSPARENT );

  // Set this font to DC     
  dc.SelectObject( &NewFont );     
  dc.TextOut( 100,100, _T( "Nibu babu thomas loves Jesus Christ" ));

  // Restore dc to previous state    
  dc.RestoreDC( DcRestorePoint );
}// End OnPaint

Not much of work ! 🙂