2011-03-03 62 views
0
gfx.DrawString(
    thisTempLabel.LabelText, 
    new Font("Arial", (float)thisTempLabel.fontSize), 
    Brushes.Black, 
    new PointF(thisTempLabel.x, thisTempLabel.y) 
    ); 

这工作得很好,但我保存在我的像素字体大小(thisTempLabel.fontSize)。我不能为我的生活制定出如何转换它们(可能不可能)或如何解决这个问题。C#绘制文本

他们出现了一些权利,但不是在一个有点位,有点太大。

精度非常重要。

回答

2

我想你遇到的问题可能是,constructor you're using预计规模将在几点:

public Font(FontFamily family, float emSize) 

emSize
类型:System.Single
的EM-大小,点,新的字体。

看起来你可以use a different overload这需要GraphicsUnit参数,你可以设置为GraphicsUnit.Pixel

gfx.DrawString(
    thisTempLabel.LabelText, 
    new Font("Arial", (float)thisTempLabel.fontSize, GraphicsUnit.Pixel), 
    Brushes.Black, 
    new PointF(thisTempLabel.x, thisTempLabel.y) 
); 

请注意,您设置EM大小,这是,大致的高度“M”字符。

+0

谢谢!我将如何修改我的代码来使用它?我发现msdn文档令人困惑:S –

+0

增加了一个例子。 – notJim