• ベストアンサー

VC#2005で逆さ文字を表示する

Visual C# 2005の環境で逆さ文字をLabel等のコントロールに表示させる事は出来ますでしょうか? 可能であれば、その手順を教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

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の各座標は適宜修正してください

shis
質問者

お礼

WinAPIはまだ勉強中のため理解するのに若干苦労しましたがなんとか使う事が出来ました。 どうもありがとうございました。

その他の回答 (1)

回答No.2
shis
質問者

お礼

ご回答ありがとうございます。 これは比較的シンプルなやり方で良いですね。 WinAPIでの実現に挫折したらこちらを使おうと思います。

関連するQ&A