如何用像素扣来绘制角具有



i使用 ID2D1RenderTarget::DrawGlyphRun方法渲染文本,但会变得有些模糊。但是,如果我使用ID2D1RenderTarget::DrawTextLayout方法,文本很清楚,因为DirectWrite执行PixelSnapping

所以我的问题是,即使我使用ID2D1RenderTarget::DrawGlyphRun方法,我该如何进行像素?

我试图绕坐标:

(int)(baselineOrigin.Y + 0.5f)

,但仅在某些情况下有所帮助。

在使用direct2d呈现文本之前,圆形坐标的正确方法是什么?

非常感谢您,任何帮助都将不胜感激。

简短的答案是,您无法使用DrawGlyphRun()做到这一点。Pixel捕捉模式通过Direct2D实施的IDWriteTextRenderer传达给IDWriteTextLayout::Draw()DrawGlyphRun()不在布局上运行,因此您没有相同的控制方法。

关于坐标圆形,您可能想朝水平方向围式圆形以进行水平布局,而您的示例不这样做。

为了避免文本模糊,应将字形的Y位置舍入。就像您一样:

(int)(baselineOrigin.Y + 0.5f)

但是,您还应该考虑ID2D1RenderTarget::GetTransform。如果变换导致1个以外的比例或导致垂直偏移,则需要计算出出现字形的实际位置,并且只有然后圆。

相关内容

  • 没有找到相关文章