2012-01-23 10 views
0

CSSフォントを可能な限り反映する必要のあるコードのテキストイメージを作成しています。 CSSクラスは、次のようになります。System.Drawing.FontはCSSフォントを反映する

.font 
{ 
     letter-spacing: -0.7px; 
     font-family: segoe wp,segoe ui,verdana,arial,helvetica,sans-serif; 
     font-size: 1.15em; 
     padding: 10px; 
} 

マイ画像コードは次のようになります。

using (var helper = new Bitmap(1, 1)) 
using (var gHelper = Graphics.FromImage(helper)) 
using (var font = new Font("Segoe WP", 1.15f, GraphicsUnit.Point)) 
using (var brush = new SolidBrush(Color.White)) 
{ 
    var size = gHelper.MeasureString(concept, font); 

    using (var image = new Bitmap((int)size.Width + _padding, (int)size.Height + _padding)) 
    { 
     using (var g = Graphics.FromImage(image)) 
     { 
      g.Clear(Color.Black); 
      g.DrawString(concept, font, brush, (float)_padding/2, (float)_padding/2); 
     } 

     var converter = new ImageConverter(); 
     var b = (byte[])converter.ConvertTo(image, typeof(byte[])); 

     return File(b, _contentType); 
    } 
} 

このコードによって生成された画像は非常に小さいです。

私が推測している文字間隔では、ループを作成して各文字を個別に描画する必要がありますが、C#のEMでどのように動作しますか?

答えて

3

私の意見では、EMは固定されていないため、EMで作業することはできません。
この(http://webdesign.about.com/od/typemeasurements/qt/how-big-is-an-em.htmから抽出された)部分を読む

をしかし、エムがどのようにビッグですか?
W3Cによると、 " が使用されている要素の 'font-size'プロパティの計算値と等しいです。例外は、 の値に 'em' 'font-size'プロパティそのもので、親要素のフォントサイズ を参照します。言い換えれば、emは絶対サイズが ではありません。彼らは彼らがどこにいるかに基づいて彼らのサイズの値を取る。たいていの場合 ウェブデザイナーの場合、ウェブブラウザであることを意味します。したがって、1emの高さのフォント は、そのブラウザ のデフォルトのフォントサイズとまったく同じサイズです。

しかし、デフォルトのサイズはどれくらいですか?
は、ほとんどの人はあなたがほとんどのブラウザは16pxにの デフォルトのフォントサイズを持っていると仮定することができませんので、お客様のブラウザでデフォルトのフォントサイズを変更するが、 でき として、100%確実である方法はありません。ほとんどの場合、1em = 16pxです。

だからあなたが試すことができます:

using (var font = new Font("Segoe WP", 16 * 1.15f, GraphicsUnit.Point)) 

を、これが唯一の近似値であることを最初から知っています!

0

グラフィックオブジェクトは、解像度が低い画面に描画していることを前提としています。新しいグラフィックスオブジェクトを作成し、より適切な解像度

Bitmap bmp = new Bitmap(2000, 500); 
bmp.SetResolution(300, 300); 
Graphics g = Graphics.FromImage(bmp); 
// render your text. 

を定義します。また、良好な結果を与えるSystem.Drawing.TextRendererを、使用することができます。

1

using (var font = new Font("Segoe WP", 1.15f, GraphicsUnit.Point))

ポイント!=エム。

IIRCでは、emは既定のフォントとの比率に過ぎません。

関連する問題