2012-05-11 41 views
0

我正在使用graphic.DrawString以及...繪製一個字符串。在一臺PC上使用DrawString更寬

我指定了字體系列,字體大小,字體樣式,圖形單位。

一切運行良好的50臺電腦,但只有一個,字體是「大膽」。 這些字符的高度相同,但由於某些原因,「像素」的寬度是雙倍。

這可以用代碼修復嗎?
這可以使用Windows設置來修復嗎?

+0

改變是對基本字體缺少一臺PC上(即,版本不是粗體)? – Oded

+0

用戶可以在控制面板中指定各種文本DPI設置 - 您確定抽繩實際上是不正確地繪製它嗎? –

+0

以及..我最後能夠通過設置 重現問題graphic.TextRenderingHint = Drawing.Text.TextRenderingHint.ClearTypeGridFit 似乎是一個問題與機器的默認設置。 –

回答

0

我能解決它改變了「使用下列方式使屏幕字體的邊緣」,從清除類型標準。

它也可以在代碼中通過修改graphic.TextRenderingHint

1

它可以通過確保在所有機器上安裝相同的適用字體並確保Windows個性化設置相同來固定,但最終,您的代碼永遠不應該假定DrawString始終會在文本上繪製相同寬度每臺機器。字體意思是可變的,所以當你選擇一種字體時,實際使用的字體在每臺計算機上可能不同。如果可能的話,你應該編寫你的應用程序來處理寬度不同的文本。你可以通過調用Graphics.MeasureString,拉絲等之前獲取文本的寬度:

Dim textSize As SizeF = graphic.MeasureString("text to measure", Me.Font, Me.ClientRectangle.Width) 
相關問題