如何根据图标的大小确定使用哪种字体大小?

发布于 2024-09-06 04:05:42 字数 734 浏览 11 评论 0原文

我正在尝试在 C# 中创建一个任务栏图标,它将显示一个代表应用程序当前处理器时间的数字。我可以通过简单地引用默认任务栏图标尺寸来确定图标的正确大小,但是,我遇到了问题。不同的图标大小可以很好地配合不同字体大小的文本。我需要弄清楚如何选择一种字体大小,该字体大小在给定要创建的图标的大小的情况下尽可能清晰易读。

在本例中,字体大小 18 效果很好,因为我正在创建的图标的位图分辨率为 32x32(因为我的显示器具有 1680 x 1050 分辨率)。但是,假设要制作的图标的分辨率为 16x16(或小于 32 x 32),那么 18 的字体大小对于图标本身来说太大了。是否有我可以进行的方法调用,或者类似的方法可以告诉窗口根据要显示的图标的分辨率找出要使用的最佳字体大小?如果这是一篇令人困惑的帖子,我很抱歉,我很乐意澄清任何事情。

 using (var image = new Bitmap(Icon.Width, Icon.Height)) 
        using (var g = Graphics.FromImage(image))
        {
            g.DrawString(cpuReading.ToString(), new Font("Times New Roman", 18), new SolidBrush(Color.LightGreen), new PointF());
            this.tskBarIcon.Icon = Icon.FromHandle(image.GetHicon());
        }

I'm trying to create a taskbar Icon in C# that would display a number representing the current processor time of an application. I can figure out the proper size of the icon by simply referencing the default taskbar icons dimesions, however, I run into a problem. Different Icon sizes work well with different font sizes of text. I need to figure out how to select a font size that would be as legible and clear as possible given the size of the Icon to be created.

In this case, font size 18 works well as the bitmap resolution of the Icon I'm creating is 32x32 (as my monitor has a 1680 x 1050 resolution). However, suppose the Icon to be made has a resolution of 16x16 (or something smaller than 32 x 32) - then a font size of 18 would be too large for the icon itself. Is there a method call I can make, or something along those lines that would tell windows to figure out the best font-size to use depending on resolution of the icon it is to be displayed on? I'm sorry if this is a confusing post, I would be happy to clarify anything.

 using (var image = new Bitmap(Icon.Width, Icon.Height)) 
        using (var g = Graphics.FromImage(image))
        {
            g.DrawString(cpuReading.ToString(), new Font("Times New Roman", 18), new SolidBrush(Color.LightGreen), new PointF());
            this.tskBarIcon.Icon = Icon.FromHandle(image.GetHicon());
        }

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

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

发布评论

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

评论(1

放肆 2024-09-13 04:05:42

没有直接的方法可以做你想做的事。

但您可以做的是使用 Graphics.MeasureString 来测量大小渲染字符串的。开始使用较大的字体进行测量,然后逐渐尝试较小的字体,直到达到适合您的图标尺寸的字体。

There is no direct method to do what you want.

But what you can do is use Graphics.MeasureString to measure the size of a rendered string. Start measuring with a large font size, and then try progressively smaller sizes until you get to one that will fit your icon dimensions.

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