倍角文字を出力できますか?
対象製品
ActiveReports for .NET 7.0J
詳細
ActiveReportsには、文字を横倍角や縦倍角で出力するための直接的な機能は用意されておりませんが、GraphicsクラスのDrawStringメソッドを用いることで、それに近い動作は可能です。
◆サンプルコード(VB.NET)
◆サンプルコード(C#)
なお、上記の方法によって描画された文字列は、Graphicsオブジェクト(メタ形式)上にレンダリングされているため、レポート上では全て画像データとなります。
◆サンプルコード(VB.NET)
Private Sub Detail_Format(sender As Object, e As EventArgs) Handles Detail.Format
Me.Picture1.Size = New System.Drawing.SizeF(4.0F, 2.0F)
Dim bm As New System.Drawing.Bitmap(400, 200)
Me.Picture1.Image = bm
' Graphicsオブジェクトを作成します。
Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(Me.Picture1.Image)
' 出力するフォントを設定します。
Dim f As New System.Drawing.Font("MS ゴシック", 12.0F)
' 表示位置の単位を mm に設定します。
g.PageUnit = System.Drawing.GraphicsUnit.Millimeter
' テキストレンダリングの品質を指定します。
' (アンチエイリアス処理されたグリフ ビットマップを使用)
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias
' ------ アンチエイリアス処理した通常のサイズの文字を表示 ------
g.TranslateTransform(10.0F, 0.0F) '表示位置の設定
g.ScaleTransform(1.0F, 1.0F) '横・縦の表示比率の設定
g.DrawString("通常サイズの文字", f, System.Drawing.Brushes.Black, 0.0F, 0.0F)
g.ResetTransform() '単位行列にリセット
' ---------------------- 横倍角文字を表示 ----------------------
g.TranslateTransform(10.0F, 10.0F) '表示位置の設定
g.ScaleTransform(2.0F, 1.0F) '横・縦の表示比率を設定
g.DrawString("横倍角文字", f, System.Drawing.Brushes.Red, 0.0F, 0.0F)
g.ResetTransform() '単位行列にリセット
' ---------------------- 縦倍角文字を表示 ----------------------
g.TranslateTransform(10.0F, 20.0F) '表示位置の設定
g.ScaleTransform(1.0F, 2.0F) '横・縦の表示比率を設定
g.DrawString("縦倍角文字", f, System.Drawing.Brushes.Blue, 0.0F, 0.0F)
g.ResetTransform() '単位行列にリセット
f.Dispose()
g.Dispose()
End Sub
Me.Picture1.Size = New System.Drawing.SizeF(4.0F, 2.0F)
Dim bm As New System.Drawing.Bitmap(400, 200)
Me.Picture1.Image = bm
' Graphicsオブジェクトを作成します。
Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(Me.Picture1.Image)
' 出力するフォントを設定します。
Dim f As New System.Drawing.Font("MS ゴシック", 12.0F)
' 表示位置の単位を mm に設定します。
g.PageUnit = System.Drawing.GraphicsUnit.Millimeter
' テキストレンダリングの品質を指定します。
' (アンチエイリアス処理されたグリフ ビットマップを使用)
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias
' ------ アンチエイリアス処理した通常のサイズの文字を表示 ------
g.TranslateTransform(10.0F, 0.0F) '表示位置の設定
g.ScaleTransform(1.0F, 1.0F) '横・縦の表示比率の設定
g.DrawString("通常サイズの文字", f, System.Drawing.Brushes.Black, 0.0F, 0.0F)
g.ResetTransform() '単位行列にリセット
' ---------------------- 横倍角文字を表示 ----------------------
g.TranslateTransform(10.0F, 10.0F) '表示位置の設定
g.ScaleTransform(2.0F, 1.0F) '横・縦の表示比率を設定
g.DrawString("横倍角文字", f, System.Drawing.Brushes.Red, 0.0F, 0.0F)
g.ResetTransform() '単位行列にリセット
' ---------------------- 縦倍角文字を表示 ----------------------
g.TranslateTransform(10.0F, 20.0F) '表示位置の設定
g.ScaleTransform(1.0F, 2.0F) '横・縦の表示比率を設定
g.DrawString("縦倍角文字", f, System.Drawing.Brushes.Blue, 0.0F, 0.0F)
g.ResetTransform() '単位行列にリセット
f.Dispose()
g.Dispose()
End Sub
◆サンプルコード(C#)
private void detail_Format(object sender, EventArgs e)
{
this.picture1.Size = new System.Drawing.SizeF(4.0F, 2.0F);
System.Drawing.Bitmap bm = new System.Drawing.Bitmap(400, 200);
this.picture1.Image = bm;
// Graphicsオブジェクトを作成します。
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(this.picture1.Image);
// 出力するフォントを設定します。
System.Drawing.Font f =new System.Drawing.Font("MS ゴシック", 12.0f);
// 表示位置の単位を mm に設定します。
g.PageUnit = System.Drawing.GraphicsUnit.Millimeter;
// テキストレンダリングの品質を指定します。
// (アンチエイリアス処理されたグリフ ビットマップを使用)
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
// ------ アンチエイリアス処理した通常のサイズの文字を表示 ------
g.TranslateTransform(5.0f, 5.0f); // 表示位置の設定
g.ScaleTransform(1.0f, 1.0f); // 横・縦の表示比率の設定
g.DrawString("通常サイズの文字", f, System.Drawing.Brushes.Black, 0.0f, 0.0f);
g.ResetTransform(); // 単位行列にリセット
// ---------------------- 横倍角文字を表示 ----------------------
g.TranslateTransform(5.0f, 15.0f); // 表示位置の設定
g.ScaleTransform(2.0f, 1.0f); // 横・縦の表示比率を設定
g.DrawString("横倍角文字", f, System.Drawing.Brushes.Red, 0.0f, 0.0f);
g.ResetTransform(); // 単位行列にリセット
// ---------------------- 縦倍角文字を表示 ----------------------
g.TranslateTransform(5.0f, 25.0f); // 表示位置の設定
g.ScaleTransform(1.0f, 2.0f); // 横・縦の表示比率を設定
g.DrawString("縦倍角文字", f, System.Drawing.Brushes.Blue, 0.0f, 0.0f);
g.ResetTransform(); // 単位行列にリセット
f.Dispose();
g.Dispose();
}
{
this.picture1.Size = new System.Drawing.SizeF(4.0F, 2.0F);
System.Drawing.Bitmap bm = new System.Drawing.Bitmap(400, 200);
this.picture1.Image = bm;
// Graphicsオブジェクトを作成します。
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(this.picture1.Image);
// 出力するフォントを設定します。
System.Drawing.Font f =new System.Drawing.Font("MS ゴシック", 12.0f);
// 表示位置の単位を mm に設定します。
g.PageUnit = System.Drawing.GraphicsUnit.Millimeter;
// テキストレンダリングの品質を指定します。
// (アンチエイリアス処理されたグリフ ビットマップを使用)
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
// ------ アンチエイリアス処理した通常のサイズの文字を表示 ------
g.TranslateTransform(5.0f, 5.0f); // 表示位置の設定
g.ScaleTransform(1.0f, 1.0f); // 横・縦の表示比率の設定
g.DrawString("通常サイズの文字", f, System.Drawing.Brushes.Black, 0.0f, 0.0f);
g.ResetTransform(); // 単位行列にリセット
// ---------------------- 横倍角文字を表示 ----------------------
g.TranslateTransform(5.0f, 15.0f); // 表示位置の設定
g.ScaleTransform(2.0f, 1.0f); // 横・縦の表示比率を設定
g.DrawString("横倍角文字", f, System.Drawing.Brushes.Red, 0.0f, 0.0f);
g.ResetTransform(); // 単位行列にリセット
// ---------------------- 縦倍角文字を表示 ----------------------
g.TranslateTransform(5.0f, 25.0f); // 表示位置の設定
g.ScaleTransform(1.0f, 2.0f); // 横・縦の表示比率を設定
g.DrawString("縦倍角文字", f, System.Drawing.Brushes.Blue, 0.0f, 0.0f);
g.ResetTransform(); // 単位行列にリセット
f.Dispose();
g.Dispose();
}
なお、上記の方法によって描画された文字列は、Graphicsオブジェクト(メタ形式)上にレンダリングされているため、レポート上では全て画像データとなります。
関連情報
キーワード
HowTo デザイン・レイアウト