C# 绘制文本

发布于 2024-10-20 04:29:01 字数 347 浏览 8 评论 0原文

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

这工作正常,除了我以像素为单位存储字体大小 (thisTempLabel.fontSize)。我一生都无法弄清楚如何转换它们(可能不可能)或如何解决这个问题。

它们看起来有点正确,但位置不正确,有点太大了。

精度非常重要。

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

This works fine, except I store my font size (thisTempLabel.fontSize) in pixels. I can't for the life of me work out how to convert them (probably impossible) or what to do to resolve this.

They come out sort of right, but not in the right position by a bit and a bit too big.

Precision is very important.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

郁金香雨 2024-10-27 04:29:01

我认为您遇到的问题可能是您正在使用的构造函数 期望大小以磅为单位:

public Font(FontFamily family, float emSize)

emSize
类型:System.Single
新字体的 em 大小(以磅为单位)。

看起来您可以使用需要 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”字符的高度。

I think the issue you're having might be that the constructor you're using expects the size to be in points:

public Font(FontFamily family, float emSize)

emSize
Type: System.Single
The em-size, in points, of the new font.

It looks like you can use a different overload that takes GraphicsUnit parameter, which you can set to GraphicsUnit.Pixel:

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

Note that you're setting the em size, which is, roughly, the height of the "M" character.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文