Windows フォーム アプリケーション、Visual Studio 2010 (C++) で、テキスト ブロックまたは数値を 90 度回転させたいと考えています。これを行う簡単な方法はありますか?
1630 次
2 に答える
1
LOGFONT を作成し、次のようにlfEscapementとlfOrientationの値をいじる必要があります。
SetGraphicsMode(hdc, GM_ADVANCED);
LOGFONT font = {0};
font.lfHeight = 0;
font.lfWidth = 0;
font.lfEscapement = 900; // here
font.lfOrientation = 900; // and here
font.lfWeight = 0;
font.lfItalic = false;
font.lfUnderline = false;
font.lfStrikeOut = false;
font.lfCharSet = DEFAULT_CHARSET;
font.lfOutPrecision = OUT_DEFAULT_PRECIS;
font.lfClipPrecision = CLIP_DEFAULT_PRECIS;
font.lfQuality = CLEARTYPE_QUALITY;
font.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
auto newfont = CreateFontIndirect(&font);
auto oldfont = SelectObject(hdc, newfont);
/* do actual drawing here */
SelectObject(hdc, oldfont);
SetGraphicsMode(hdc, GM_COMPATIBLE);
DeleteObject(newfont);
于 2013-08-23T06:40:37.627 に答える
0
String theString = "90 Degree Rotated Text";
SizeF sz = e.Graphics.VisibleClipBounds.Size;
//Offset the coordinate system so that point (0, 0) is at the center of the desired area.
e.Graphics.TranslateTransform(sz.Width / 2, sz.Height / 2);
//Rotate the Graphics object.
e.Graphics.RotateTransform(90);
sz = e.Graphics.MeasureString(theString, this.Font);
//Offset the Drawstring method so that the center of the string matches the center.
e.Graphics.DrawString(theString, this.Font,
Brushes.Black, -(sz.Width/2), -(sz.Height/2));
//Reset the graphics object Transformations.
e.Graphics.ResetTransform();
ここからコピペ
于 2013-08-23T06:08:01.660 に答える