簡體   English   中英

如何在不填充的情況下繪制字符串

[英]How to draw a string without padding

我正在使用GraphicsPath.AddString()函數,但它在文本周圍留有一些空白。 任何想法如何繪制字符串而無需填充,僅繪制文本路徑?

我的代碼是這樣的:

GraphicsPath gp = new GraphicsPath();

gp.AddString(text, font.FontFamily, (int)font.Style, font.Size,
    boundsRectangle, format);

g.DrawPath(pen, gp);

發生了什么,可能是從文檔中使用了Graphics.MeasureString():

GDI +在顯示的每個字符串的每一端添加少量(1/6 em)。 這個1/6 em允許>帶有懸垂末端的字形(例如斜體“ f”),並且還給GDI +少量的回旋余量,以幫助擴展網格擬合。

DrawString的默認操作將在顯示相鄰運行時對您不利:

首先,默認的StringFormat在每個輸出的每一端添加一個額外的1/6 em。 其次,當網格擬合的寬度小於設計的寬度時,允許字符串最多收縮一個em。 為避免這些問題:

始終根據版式> StringFormat(GenericTypographic)將MeasureString和DrawString傳遞給StringFormat。 將圖形TextRenderingHint設置為TextRenderingHintAntiAlias。 該渲染方法使用抗鋸齒和子像素字形定位來避免網格擬合的需要,因此固有地與分辨率無關。

因此,看起來您應該能夠使用正確的StringFormat修復此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM