我想在vb.net 2010的菜單項的左側邊距中添加一個數字,但似乎只能將其設置爲圖像。所以,我一直在嘗試使用Graphics.DrawString()
來創建一個我想要的號碼的圖像。我嘗試了各種方法,但是我無法將結果圖像看作菜單項本身的文本 - 有沒有辦法做到這一點?這是我目前的代碼(分配一個圖片來衡量文本,然後重新分配正確的大小是關於這個版本3 - 非常醜陋,但我不知道如何度量)。在vb.net中繪製文本以匹配菜單項
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
這裏有一對夫婦的這是什麼給出一些例子 - 注意如何模糊邊緣的文字(圖像)相比,菜單項文本:
我已經嘗試了所有的TextRenderingHint
選項,其中一些比其他更好,但沒有一個給出菜單文本的清晰外觀。有沒有辦法更接近那種外觀?
您是否嘗試過其他刷或字體來的DrawString()? – TimG
「DrawString」的筆刷選擇似乎僅限於更改顏色。至於字體,我推測如果我想讓它匹配菜單文本,使用菜單的字體將是最好的選擇 - 是不是這種情況? – dsl101
我還沒有嘗試System.Drawing.Brush類的所有功能。看起來像Brushes.Black將與Brush或SolidBrush相同,但你永遠不知道。這聽起來像是你用TextRenderer獲得了勝利者。榮譽。 – TimG