Schrift um 90° drehen

B

ByeBye 31659

Code:
   CFont fontfirma; 
    VERIFY(fontfirma.CreateFont( 
       20,                        // nHeight 
       0,                         // nWidth 
       0,                         // nEscapement 
       90,                         // nOrientation 
       FW_BOLD,                 // nWeight 
       FALSE,                     // bItalic 
       FALSE,                     // bUnderline 
       0,                         // cStrikeOut 
       ANSI_CHARSET,              // nCharSet 
       OUT_DEFAULT_PRECIS,        // nOutPrecision 
       CLIP_DEFAULT_PRECIS,       // nClipPrecision 
       DEFAULT_QUALITY,           // nQuality 
       DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily 
       NULL));                 // lpszFacename 

    m_stFirma.SetFont(&fontfirma);

Das benutze ich...

Kann mir jemand sagen, warum der Text trotzdem normal und nicht um 90 Grad gedreht erscheint?
 
Also es wird mir eine "1" sprich eins zurückgegeben wenn ich das per TRACE abfrage.
Aber ich kann auch die Schriftgröße ändern, es bleibt imemr die gleiche. Entweder standard oder wenn cih etwas ändere egal wie die gleiche größe dann.
Später im Programm ändere ich nochmal andere schriften dort klappt es und cih habe die fonts auch unterschiedlich benannt.
Kann es daran liegen, das der oben gezeigte codeschnippsel schon beim start geladen wird?
 
Code:
void CAccess_testDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // Gerätekontext für Zeichnen

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Symbol in Client-Rechteck zentrieren
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Symbol zeichnen
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
		CFont fontfirma; 
		CString test;
		VERIFY(test = fontfirma.CreateFont( 
		   40,                        // nHeight 
		   0,                         // nWidth 
		   915,                         // nEscapement 
		   0,                         // nOrientation 
		   FW_BOLD,                 // nWeight 
		   FALSE,                     // bItalic 
		   FALSE,                     // bUnderline 
		   0,                         // cStrikeOut 
		   ANSI_CHARSET,              // nCharSet 
		   OUT_DEFAULT_PRECIS,        // nOutPrecision 
		   CLIP_DEFAULT_PRECIS,       // nClipPrecision 
		   DEFAULT_QUALITY,           // nQuality 
		   DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily 
		   "Arial"));                 // lpszFacename 

		m_stFirma.SetFont(&fontfirma);
		TRACE("\n\n%s\n\n", test);
	}
}

So ich hab es nun in die OnPaint Funktion gepackt nun lässt sich immerhin die Schriftgröße bereits ändern. Drehen kann ich es nun auch aber wenn cih 90 eingebe, dreht er nciht um 90 Grad sondern nur ein klein wenig und das auch nur wenn cih es bei nEscapement schieb und nciht bei nOrientation! Noch weitere nützlich Tipps?
 
Hehe, ich weiss es, ich weiss es! :)
nOrientation
Specifies the angle, in 0.1-degree units, between the baseline of a character and the x-axis. The angle is measured counterclockwise from the x-axis for coordinate systems in which the y-direction is down and clockwise from the x-axis for coordinate systems in which the y-direction is up.
(Aus der MSDN Lib)
nOrientation ist ein int, deshalb kannst du nicht die Gradzahlen direkt eingeben sondern nur die Anzahl von 0.1-Grad-Schritten. Nimm mal 900!
 
Danke für die Hilfe aber ich hab es selber gefunden bevor ich deinen Eintrag gelesen habe *gg*

Aber das heißt nicht das ich nun sorgenfrei bin...

Nun dreht er es perfekt 90 Grad nach oben, ja wie gesagtder Erste Buchstabe bleibt wo er ist udn der Rest ordnet sich darüber an.
Wie kann ich das einstellen, das der Buchstabe in der Mitte nun an die Stelle dse ersten Buchstabens kommt, spricht das es neu zentriert wird`?
 
Du willst den Text zentrieren? Vertikal? Ich kann mir das nicht so genau vorstellen, wie es ausehen soll, aber dazu muss du die Abmessungen vom Text rauskriegen und die Ausgabe entsprechend machen. Kannst du mal eine Skizze anhängen oder so?
 
So ich habe eine Paint Zeichnung angehängt

Ganz links ist der Ausgangszustand, dann in der Mitte so wie es wird und ganz rechts wie ich es gerne hätte.

Der rote Punkt verdeutlicht den Startpunkt des ersten Buchstaben von der Ausgangssituation

Hey wo ist die Zeichnung hin?

Kann cih dir sont meine Zeichnung per email schicken weiß nciht wie ich die heir einfüge...
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück