−トップへ−

イメージコンポーネントに文字を書き込む

 普通,フォームに文字を表示する場合は,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コンポーネント の中央で次第に大きくなって表示されます。

−トップへ−