イメージコンポーネントに文字を書き込む
普通,フォームに文字を表示する場合は,Labelコンポーネントなどを使いますが,Imageコンポーネントに直接文字を書き込むことができます。
下のようなコードを書くと,座標(100,100)の場所に,「DELPHI」と表示されます。
with image1.Canvas do
begin
font.Color:=clblack; //フォントの色を黒に指定
font.Size:=40; //フォントのサイズを40ピクセルに指定
textout(100,100, 'DELPHI'); //座標(100,100)の場所に'DELPHI'と表示
end;
また,textwidth('文字列'),textheight('文字列')を使うと,文字列の長さと高さを,ピクセルで返してきます。
このtextwidthとtextheightを使うと,文字を常にイメージコンポーネントの中央に表示させることができます。
実際に,コードを書いてみます。まず,フォームに Imageコンポーネントを大きめに貼り付け,Image1Click イベントを作成します。
unit test1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
procedure Image1Click(Sender: TObject);
private
{ Private 宣言 }
size:integer; //'size'を整数宣言
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Image1Click(Sender: TObject);
begin
size:=size+5; //変数'size'を5ピクセル大きくする
with image1.Canvas do
begin
font.Color:=clblack;
font.Size:=size; //フォントのサイズを変数'size'の大きさにする
textout((image1.Width-textwidth('delphi')) div 2,(image1.Height-textheight('delphi')) div 2,'delphi');
end;
end;
end.
これを実行し,Imageコンポーネントを クリックしていくと,'delphi'の文字がImageコンポーネント の中央で次第に大きくなって表示されます。