16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"切り抜き文字"
この発言に対し以下のコメントが寄せられています
#00445 Fermion さん RE:切り抜き文字
■説明
フォームに切り抜き文字を表示させるサンプルです。
Form1 に Label1, Button1 を配置して Button1 の OnClickイベント
を以下のようにして下さい。
■サンプルコード
//=====================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
R : TRect;
W, H : Integer;
Txt : String;
begin
R := ClientRect;
with Label1 do begin
Font.Name := 'MS P明朝'; Font.Size := 64;
Caption := '見えますか?';
Left := ( R.Right - Width ) div 2;
Top := ( R.Bottom - Height ) div 2;
Update;
end;
Txt := '★透けて見える???★';
with Canvas do begin
with Font do begin
Name := 'MS P明朝';
Size := 40;
Style := Style + [fsBold];
end;
Brush.Color := $00FF0080;
W := TextWidth( Txt );
H := TextHeight( Txt );
with R do begin
Left := ( Right - Left - W ) div 2;
Top := ( Bottom - Top - H ) div 2;
BottomRight := Point( Left + W, Top + H );
end;
// 背景モードを透過に設定することにより、
// リージョンはテキスト自体になる
// SetBkMode( Handle, TRANSPARENT ); {or Brush.Style := bsClear;}
// 開始パス ブラケット
BeginPath( Handle );
// テキストを表示させる
DrawText( Handle, PChar( Txt ), -1, R,
DT_SINGLELINE or DT_VCENTER or DT_CENTER );
// 終了パス ブラケット
EndPath( Handle );
// パスからリージョンを得る
SelectClipPath( Handle, RGN_AND );
// 指定ブラシでリージョンを塗りつぶす
FillRect( R );
end;
end;
//=====================================================================
98/03/07(土) 18:12 Fermion(KHF03264)
Original document by Fermion 氏 ID:(KHF03264)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|