Rotating fonts in win95
Carsten Schwartz -- csn@dhi.dk Tuesday, December 03, 1996 Environment: VC++ 4.2-flat, Win 95 We have a problem rotating true type fonts in windows 95. We do like this under NT4.0: LOGFONT *pFont = GetLogFont(); pFont->lfEscapement = (LONG)angInDegX10; But under Windows 95 it is displayed as a normal text (horizontal). What do we do? _____________________________________________________ Carsten Schwartz Email : csn@dhi.dk Software Engineer www : http://www.dhi.dk Danish Hydraulic Institute Tel. : +45 45 76 95 55 Agern Alle 5 Fax. : +45 45 76 25 67 2970 Horsholm Denmark And they shall know no fear... _____________________________________________________
Mats Mеnhav -- manhav@connectum.skurup.se Thursday, December 05, 1996 [Mini-digest: 6 responses] -- [ From: Mats Manhav * EMC.Ver #2.5.02 ] -- The rotation of texts is only possible on TrueType fonts. Maybe by pure luck the font you are working with under NT is a TT and by pure no-luck under 95 it isn't. Mats -------- REPLY, Original message follows -------- > Date: Tuesday, 03-Dec-96 07:06 AM > > From: Carsten Schwartz \ Internet: (csn@dhi.dk) > To: MFCList \ Internet: (mfc-l@netcom.com) > > Subject: Rotating fonts in win95 > Environment: VC++ 4.2-flat, Win 95 > > We have a problem rotating true type fonts in windows 95. > > We do like this under NT4.0: > > LOGFONT *pFont = GetLogFont(); > pFont->lfEscapement = (LONG)angInDegX10; > > But under Windows 95 it is displayed as a normal text (horizontal). > > What do we do? > _____________________________________________________ > Carsten Schwartz Email : csn@dhi.dk > Software Engineer www : http://www.dhi.dk > Danish Hydraulic Institute Tel. : +45 45 76 95 55 > Agern Alle 5 Fax. : +45 45 76 25 67 > 2970 Horsholm > Denmark > > And they shall know no fear... > _____________________________________________________ > > -------- REPLY, End of original message -------- -- ========================================================================== Mats Mеnhav (Mats Manhav for 7-bit people) email:manhav@connectum.skurup.se WWW: http://connectum.skurup.se/~manhav FAX: (int) 46 (0) 414 243 05 Phone: (int) 46 (0) 414 243 05 ========================================================================== -----From: joew@statsoft.com (Joe Willcoxson) > >Environment: VC++ 4.2-flat, Win 95 > >We have a problem rotating true type fonts in windows 95. > >We do like this under NT4.0: > >LOGFONT *pFont = GetLogFont(); >pFont->lfEscapement = (LONG)angInDegX10; > >But under Windows 95 it is displayed as a normal text (horizontal). pFont->lfOrientation = pFont->lfEscapement; //? -- Joe Willcoxson (joew@statsoft.com), Senior Software Engineer Visit us: http://www.statsoft.com, Visit me: http://users.aol.com/chinajoe #define STD_DISCLAIMER "I speak only for myself" "Lotteries are a tax on people who do not understand statistics." -----From: Patrick ShaininChanging the lfEscapement field of the LOGFONT structure works in my app to rotate text on Win 95, but I am using a CFont object which I select into the active DC. You might also want use lfClipPrecision | CLIP_LH_ANGLES to keep all devices rotating in the same direction. Here's a snippet: CFont rotatedFont; CFont tempFont; LOGFONT logFont; tempFont.CreatePointFont(100,"Courier New"); tempFont.GetLogFont(&logFont); logFont.lfEscapement = angle; logFont.lfClipPrecision = logFont.ClipPrecision | CLIP_LH_ANGLES; rotatedFont.CreateFontIndirect(&logFont); pDC->SelectObject(&rotatedFont); Patrick Shainin patrick@shainin.com Carsten Schwartz wrote: >Environment: VC++ 4.2-flat, Win 95 > >We have a problem rotating true type fonts in windows 95. > >We do like this under NT4.0: > >LOGFONT *pFont = GetLogFont(); >pFont->lfEscapement = (LONG)angInDegX10; > >But under Windows 95 it is displayed as a normal text (horizontal). > >What do we do? -----From: David Little I never tried rotating just by getting a pointer. I usually rotate it = in CreateFont, and if I need another rotation somewhere else, I just = have two CFont objects and SelectObject() accordingly.... ---------- From: Carsten Schwartz[SMTP:csn@dhi.dk] Sent: Tuesday, December 03, 1996 1:06 AM To: 'MFC Mailing List' Subject: Rotating fonts in win95 Environment: VC++ 4.2-flat, Win 95 We have a problem rotating true type fonts in windows 95. We do like this under NT4.0: LOGFONT *pFont =3D GetLogFont(); pFont->lfEscapement =3D (LONG)angInDegX10; But under Windows 95 it is displayed as a normal text (horizontal). What do we do? _____________________________________________________ Carsten Schwartz Email : csn@dhi.dk Software Engineer www : http://www.dhi.dk Danish Hydraulic Institute Tel. : +45 45 76 95 55 Agern Alle 5 Fax. : +45 45 76 25 67 2970 Horsholm Denmark And they shall know no fear... _____________________________________________________ -----From: "Charles N. Johnson" Carsten -- Check out the following code I have used to do exactly this in Windows 95: void CMyView::OnDraw(CDC* pDC) { // get the size of our view... you never know, the user may // change things! CRect rcClient; GetClientRect(rcClient); // create a string to whirl about...let's see...hmmmm CString str(_T("Spin this, Dudes!")); // Now, how about a blue text with transparent background?? pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(0, 0, 255)); // create a font object CFont font; // create the font definition structure LOGFONT stFont; // clear the structure, and set the attributes that // will remain constant throughout this process...towit: memset(&stFont, 0, sizeof(LOGFONT)); stFont.lfHeight = MulDiv(14, -pDC->GetDeviceCaps(LOGPIXELSY), 72); stFont.lfWeight = FW_NORMAL; stFont.lfClipPrecision = CLIP_LH_ANGLES; strcpy(stFont.lfFaceName, "Arial"); //Boring!!! // now, draw the text at what...15 degree intervals?? Okay! // Mike B. maybe won't like this use of resources for (int theAngle = 0; theAngel < 3600; theAngle += 150) { // set the angle of rotation stFont.lfEscapement = theAngle; // make the font and select the // font into the device context, // save old font too font.CreateFontIndirect(&stFont); CFont pOldFont = pDC->SelectObject(&font); // Hey! Hey! Whirl away! pDC->TextOut(rcClient.right/2, rcClient.bottom/2, str); // hosekeeping chores...select font out of device context // and destroy GDI object pDC->SelectObject(pOldFont); font.DeleteObject(); } } ---------- > From: Carsten Schwartz > To: 'MFC Mailing List' > Subject: Rotating fonts in win95 > Date: Tuesday, December 03, 1996 1:06 AM > > > Environment: VC++ 4.2-flat, Win 95 > > We have a problem rotating true type fonts in windows 95. > > We do like this under NT4.0: > > LOGFONT *pFont = GetLogFont(); > pFont->lfEscapement = (LONG)angInDegX10; > > But under Windows 95 it is displayed as a normal text (horizontal). > > What do we do? > _____________________________________________________ > Carsten Schwartz Email : csn@dhi.dk > Software Engineer www : http://www.dhi.dk > Danish Hydraulic Institute Tel. : +45 45 76 95 55 > Agern Alle 5 Fax. : +45 45 76 25 67 > 2970 Horsholm > Denmark > > And they shall know no fear... > _____________________________________________________ > > -----From: "Beaudry, Tom" There's two different modes under NT and apparently the default mode produces what you want. Under Win95 there is only one mode and you have to set both the escapement and orientation to get the desired result. The applicable extract from the ::CreateFont online help: nEscapement Specifies the angle, in tenths of degrees, between the escapement vector and the x-axis of the device. The escapement vector is parallel to the base line of a row of text. Windows NT: When the graphics mode is set to GM_ADVANCED, you can specify the escapement angle of the string independently of the orientation angle of the string's characters. When the graphics mode is set to GM_COMPATIBLE, nEscapement specifies both the escapement and orientation. You should set nEscapement and nOrientation to the same value. Windows 95: The nEscapement parameter specifies both the escapement and orientation. You should set nEscapement and nOrientation to the same value. nOrientation Specifies the angle, in tenths of degrees, between each character's base line and the x-axis of the device. ---------- From: Carsten Schwartz[SMTP:csn@dhi.dk] Sent: Tuesday, December 03, 1996 7:06 AM To: 'MFC Mailing List' Subject: Rotating fonts in win95 Environment: VC++ 4.2-flat, Win 95 We have a problem rotating true type fonts in windows 95. We do like this under NT4.0: LOGFONT *pFont = GetLogFont(); pFont->lfEscapement = (LONG)angInDegX10; But under Windows 95 it is displayed as a normal text (horizontal). What do we do? _____________________________________________________ Carsten Schwartz Email : csn@dhi.dk Software Engineer www : http://www.dhi.dk Danish Hydraulic Institute Tel. : +45 45 76 95 55 Agern Alle 5 Fax. : +45 45 76 25 67 2970 Horsholm Denmark And they shall know no fear... _____________________________________________________
| Вернуться в корень Архива |