- ベストアンサー
VC#2005で逆さ文字を表示する
Visual C# 2005の環境で逆さ文字をLabel等のコントロールに表示させる事は出来ますでしょうか? 可能であれば、その手順を教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
WinAPIの StretchBltを使えば出来そうです [DllImport("gdi32")] public static extern int StretchBlt(IntPtr hdc1, int x1, int y1, int w1, int h1, IntPtr hdc2, int x2, int y2, int w2, int h2, uint rop); const uint SRCCOPY = 0x00CC0020; といった具合にAPI宣言をします ラベルのペイントイベントなどで Graphics g = this.CreateGraphics(); g.DrawString("Sample", label1.Font, Brushes.Blue, new Point(0, 0)); IntPtr hDC = e.Graphics.GetHdc(); // 最初の100,0,56,24が Point(100,0) Size(56,24)へ描画 // 後ろがPoint(56,0) Size(-56,24) つまり Rect(0,0,56,24)を表します StretchBlt(hDC, 100, 0, 56, 24, g.GetHdc(), 56, 0, -56, 24, SRCCOPY); e.Graphics.ReleaseHdc(hDC); g.ReleaseHdc(); g.Dispose(); といった具合です 元の文字列の描画を フォームの0,0付近にしていますがこれを適当な大きさのImageオブジェクトに置き換えてください 描画する文字列にあわせて StretchBltの各座標は適宜修正してください
その他の回答 (1)
- temtecomai2
- ベストアンサー率61% (656/1071)
ここら辺とか http://www.codeproject.com/cs/miscctrl/customtext.asp http://dobon.net/vb/dotnet/graphics/drawrotatedstring.html
お礼
ご回答ありがとうございます。 これは比較的シンプルなやり方で良いですね。 WinAPIでの実現に挫折したらこちらを使おうと思います。
お礼
WinAPIはまだ勉強中のため理解するのに若干苦労しましたがなんとか使う事が出来ました。 どうもありがとうございました。