文字の輪郭(袋文字)を描画する ~Delphiソースコード集
BeginPath、EndPathとStrokePathまたはStrokeAndFillPathで文字の輪郭を描画
文字の輪郭のみを描画する場合
procedure TForm1.Button1Click(Sender: TObject); begin //幅と高さを設定する Image1.Picture.Bitmap.Width:=600; Image1.Picture.Bitmap.Height:=80; //白色で塗り潰す Image1.Picture.Bitmap.Canvas.Brush.Style:=bsSolid; Image1.Picture.Bitmap.Canvas.Brush.Color:=clWhite; Image1.Picture.Bitmap.Canvas.FillRect(Image1.Picture.Bitmap.Canvas.ClipRect); //フォントの設定 Image1.Picture.Bitmap.Canvas.Font.Name:='MS ゴシック'; //フォントサイズを設定する(ピクセル単位) Image1.Picture.Bitmap.Canvas.Font.Height:=-50; //パスブラケットを開く BeginPath(Image1.Picture.Bitmap.Canvas.Handle); //背景モードを透明にする Image1.Picture.Bitmap.Canvas.Brush.Style:=bsClear; //文字列を描く Image1.Picture.Bitmap.Canvas.TextOut(10,10,'文字の輪郭を描画'); //パスブラケットを閉じる EndPath(Image1.Picture.Bitmap.Canvas.Handle); //ペンの色とスタイルと幅を指定する Image1.Picture.Bitmap.Canvas.Pen.Color:=clRed; Image1.Picture.Bitmap.Canvas.Pen.Style:=psSolid; Image1.Picture.Bitmap.Canvas.Pen.Width:=1; //パスを描画する StrokePath(Image1.Picture.Bitmap.Canvas.Handle); end;
文字の輪郭を描画し内部を塗りつぶす場合
procedure TForm1.Button2Click(Sender: TObject); begin //幅と高さを設定する Image1.Picture.Bitmap.Width:=600; Image1.Picture.Bitmap.Height:=80; //白色で塗り潰す Image1.Picture.Bitmap.Canvas.Brush.Style:=bsSolid; Image1.Picture.Bitmap.Canvas.Brush.Color:=clWhite; Image1.Picture.Bitmap.Canvas.FillRect(Image1.Picture.Bitmap.Canvas.ClipRect); //フォントの設定 Image1.Picture.Bitmap.Canvas.Font.Name:='MS ゴシック'; //フォントサイズを設定する(ピクセル単位) Image1.Picture.Bitmap.Canvas.Font.Height:=-50; //パスブラケットを開く BeginPath(Image1.Picture.Bitmap.Canvas.Handle); //背景モードを透明にする Image1.Picture.Bitmap.Canvas.Brush.Style:=bsClear; //文字列を描く Image1.Picture.Bitmap.Canvas.TextOut(10,10,'文字の輪郭と内部を描画'); //パスブラケットを閉じる EndPath(Image1.Picture.Bitmap.Canvas.Handle); //ペンの色とスタイルと幅を指定する Image1.Picture.Bitmap.Canvas.Pen.Color:=clRed; Image1.Picture.Bitmap.Canvas.Pen.Style:=psSolid; Image1.Picture.Bitmap.Canvas.Pen.Width:=1; //ブラシの色とスタイルを設定する Image1.Picture.Bitmap.Canvas.Brush.Color:=clBlue; Image1.Picture.Bitmap.Canvas.Brush.Style:=bsDiagCross; //パスとパスの内部を描画する StrokeAndFillPath(Image1.Picture.Bitmap.Canvas.Handle); end;