API を使って縦書きなどのフォントを指定する

[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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください