gpt4 book ai didi

.net - 在 vb.net 中绘制文本以匹配菜单项

转载 作者:行者123 更新时间:2023-12-01 03:50:37 24 4
gpt4 key购买 nike

我想在 vb.net 2010 中菜单项的左侧边距中放置一个数字,但似乎只能将其设置为图像。所以,我一直在尝试使用 Graphics.DrawString() 用我想要的数字创建一个图像。 .我尝试了各种方法,但我无法让生成的图像看起来像菜单项本身中的文本 - 有没有办法做到这一点?这是我当前的代码(分配一个图像来测量文本,然后以正确的大小重新分配大约是第 3 版 - 非常难看,但我不知道如何测量)。

mnuItem = New ToolStripMenuItem
numPeople = CInt(Math.Ceiling(Rnd() * 20))

' Calculate the size of the text
qImg = New Bitmap(1, 1)
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Center
gr = Graphics.FromImage(qImg)
gr.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
sz = gr.MeasureString(numPeople, mnuItem.Font, New Point(0, 0), sf)
w = CInt(Math.Ceiling(sz.Width))
h = CInt(Math.Ceiling(sz.Height))
m = Math.Max(w, h)

' Now allocate an image of the correct size
qImg = New Bitmap(m, m)
gr = Graphics.FromImage(qImg)
gr.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
gr.DrawString(numPeople, mnuItem.Font, Brushes.Black, New RectangleF((m - w) / 2, (m - h) / 2, w, h), sf)

mnuItem.Image = qImg

以下是这给出的几个示例 - 请注意边距文本(图像)与菜单项文本的比较模糊程度:

Example menu with fuzzy text Example menu with fuzzy text

我已经尝试了所有 TextRenderingHint选项,有些比其他的要好,但没有一个能提供菜单文本的清晰外观。有没有办法更接近那个样子?

最佳答案

您是否尝试过创建自己的 ToolStripMenuItem ?

Class CustomToolStripMenuItem
Inherits System.Windows.Forms.ToolStripMenuItem
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
e.Graphics.DrawString("11", Me.Font, System.Drawing.Brushes.Black, New System.Drawing.PointF(0, 0))
End Sub
End Class

我没有做任何计算来正确显示它,但我认为你可以做到。它在我的系统上看起来像这样(请参阅“另存为”项目)

enter image description here

关于.net - 在 vb.net 中绘制文本以匹配菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23267151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com