GDI を使用して、サーバー上のフォントを使用してテキスト イメージを生成し、サイトで提供したいと考えています。
サイトで任意のフォントを使用したいのですが、もちろん Web サイトではフォントを使用できませんでした。そのため、テキストの画像を自分で生成する必要があると思います。
これを達成する方法のアイデア?
ありがとう。
GDI を使用して、サーバー上のフォントを使用してテキスト イメージを生成し、サイトで提供したいと考えています。
サイトで任意のフォントを使用したいのですが、もちろん Web サイトではフォントを使用できませんでした。そのため、テキストの画像を自分で生成する必要があると思います。
これを達成する方法のアイデア?
ありがとう。
private void button1_Click( object sender, EventArgs e )
{
using( Font f = new Font( "Times New Roman", 22f ) )
{
pictureBox1.Image = CreateImage( "TEXT", pictureBox1.Size, f, Color.Black );
}
}
Bitmap CreateImage( string text, Size imageSize, Font font, Color fontColor )
{
Bitmap image = new Bitmap( imageSize.Width, imageSize.Height );
using( Graphics g = Graphics.FromImage( image ) )
using( Brush brush = new SolidBrush( fontColor ) )
{
g.DrawString( text, font, brush, new PointF( 0, 0 ) );
}
return image;
}
これは、特定のサイズのテキストを含む画像を作成し、それをピクチャボックスに割り当てるだけです。もちろん、アライメントを設定する機能などを追加する必要がありますが、これが基本的な考え方です。画像を作成し、そこから Graphics オブジェクトを取得して、文字列を描画します。
Graphics.MeasureString メソッドを使用して、フォント 'f' を使用して描画された文字列の幅と高さを取得することもできます。
明確にするためにハードコーディングされたコードサンプル:
Bitmap b = new Bitmap(200, 100);
using (Graphics g = Graphics.FromImage(b)) {
g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias;
g.DrawString("Hello World!", new Font("Tahoma", 12), Brushes.DarkBlue, 0, 0);
b.Save("c:\\MyPic.bmp");
}
画像サイズ(200x100)、テキスト、フォント、開始位置(0,0)、および宛先パスはすべてハードコーディングされています。