|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"テキストを縦書き(回転)描画する"
GetObject と CreateFontIndirect を用いたテキストの縦書き(回転)
描画の例です。
// テキストを縦書き(回転)描画する
procedure TextOutTategaki(Canvas: TCanvas; x, y: Integer; s: String);
var
lfText: TLOGFONT; // フォント情報(SDK の‘LOGFONT’を参照)
hfNew, hfOld: HFONT; // フォントハンドル
begin
// フォント情報を Canvas.Font から取得
GetObject(Canvas.Font.Handle, sizeof(TLOGFONT), @lfText);
// フォント情報の変更(この場合は表示角度:反時計回り)
lfText.lfEscapement := 270 * 10; // 任意の角度を指定可能
lfText.lfOrientation := lfText.lfEscapement;
// 変更したフォント情報を用いて、新しいフォントハンドルを作成
hfNew := CreateFontIndirect(lfText);
// 新しいフォントハンドルをデバイスコンテキストに選択し、
// それまで選択されていたフォントハンドルを保存
hfOld := SelectObject(Canvas.Handle, hfNew);
// 選択したフォントハンドルを用いてテキストを描画
// この回転角度の場合は、座標(x, y) が描画領域の右上隅になる
Canvas.TextOut(x, y, s);
// 元のフォントハンドルハンドルを選択し戻す
SelectObject(Canvas.Handle, hfOld);
// 作成したフォントハンドルを削除
DeleteObject(hfNew);
end;
以上です。
'97/11/21、河邦 正(GCC02240@niftyserve.or.jp)
Original document by 河邦 正 氏 ID:(GCC02240)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|