簡體   English   中英

如何使用像素捕捉繪制GlyphRun?

[英]How to draw GlyphRun with pixel snapping?

我使用ID2D1RenderTarget::DrawGlyphRun方法來渲染文本,但它有點模糊。 但是,如果我使用ID2D1RenderTarget::DrawTextLayout方法,文本會非常清楚,因為DirectWrite執行PixelSnapping

所以我的問題是即使我使用ID2D1RenderTarget::DrawGlyphRun方法,我怎么能做Pixel Snapping?

我試圖圓坐標:

(int)(baselineOrigin.Y + 0.5f)

但它只在某些情況下有所幫助。

使用Direct2D在文本渲染之前對坐標進行舍入的正確方法是什么?

非常感謝,任何幫助將不勝感激。

簡短的回答是你不能用DrawGlyphRun()做到這一點。 像素捕捉模式通過Direct2D實現的IDWriteTextRenderer傳送到IDWriteTextLayout::Draw() DrawGlyphRun()不在布局上運行,因此您沒有相同的方法來控制它。

關於坐標舍入,您可能希望在水平方向上舍入以進行水平布局,並且您的示例不會這樣做。

為了避免文本模糊,字形的Y位置應該舍入。 就像你做的那樣:

(int)(baselineOrigin.Y + 0.5f)

但是,您還應該考慮ID2D1RenderTarget::GetTransform 如果Transform導致比例不是1或導致垂直移位,則需要計算字形出現的實際位置,然后才能舍入。

暫無
暫無

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

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