[API を使って縦書きなどのフォントを指定する][1] を参考に BCB6 でやってみたけど、文字化けした。
GetObject() を使えばうまく行きました。以下がそのコード。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TLogFont lbl;
GetObject(Canvas->Font->Handle, sizeof(TLogFont), &lbl);
// 日本語の場合、幅:高さ=1:2にする
lbl.lfWidth = 10;
lbl.lfHeight = 20;
// 文字の太さ(0~1000)
// 「標準」の太さは400、「太字」の太さは700
lbl.lfWeight = 400;
// 半時計回りの角度(単位は1/10度)
lbl.lfEscapement = 2700;
// 下線なし(デフォルトでは「あり」)
lbl.lfUnderline = false;
// 打ち消し線なし(デフォルトでは「あり」)
lbl.lfStrikeOut = false;
// 斜体無効(デフォルトでは有効)
lbl.lfItalic = false;
// 縦書き用の「@」がつくフォントを使用する
strcpy(lbl.lfFaceName, “@MS ゴシック”);
// フォントを作成
Canvas->Font->Handle = CreateFontIndirect(&lbl);
// 背景を透明に
Canvas->Brush->Style = bsClear;
// 文字列を描画
Canvas->TextOut(300, 300, “縦書き文字”);
}
[1]: http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=0#0137.txt