アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

よろしくお願いします。

A 回答 (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の各座標は適宜修正してください
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/25 09:58
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/25 09:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!