我在文档上呈现文本时遇到问题。具体来说,文本渲染过低。我试着在文本后面填充一个矩形,看看会发生什么,我发现它们呈现出轻微的偏移:
这是我用来渲染框和文本的代码:
_doc.FillRectangle(Colors.LightGray, 36, 72, 37.344, 9);
_doc.DrawString("Lorem", new Font("Arial", 12), Colors.Black,
new Rect(36, 72, 37.344, 9));
我知道矩形 (9) 的高度似乎与字体 (12) 的高度不匹配,一开始我认为这可能是问题所在。然而,然后我对字体本身做了一个 MeasureString 并发现它的高度实际上是 9 而不是 12(我为此使用了即时窗口,这就是为什么它是图片而不是文本 block ):
关于可能导致它的原因以及如何避免它的任何想法?
谢谢!
-阿里
最佳答案
有几个帖子讨论了 WPF text rendering inconsistencies .
其他帖子之一:WPF Text rendering problem , 表示如果文本已调整大小以跨像素显示,
SnapToDevicePixels
可能会破坏文本呈现。 建议的答案是保留,SnapToDevicePixels = True on borders/backgrounds
但为text elements
关闭它。至于您目前使用的方法。请查看我之前的一篇帖子:Increase bar chart values with button clicks : 我已经使用
DrawString()
在rectangle
中添加了一个字母。所有绘图都在Panel
中完成。
代码: ...
panel1.Paint += new PaintEventHandler(panel1_Paint);
using (Graphics g = this.panel1.CreateGraphics())
{
Brush brush = new SolidBrush(Color.Green);
g.FillRectangle(brush, px, py, 20, 20);
Pen pen = new Pen(new SolidBrush(Color.White));
g.DrawRectangle(pen, px, py, 20, 20);
//add each total5Click into chart block
g.DrawString((total5Times).ToString(), new Font("Arial", 7),
new SolidBrush(Color.AntiqueWhite),
px + 1, py+8, StringFormat.GenericDefault);
pen.Dispose();}
...
关于wpf - WPF 的 ComponentOne : Text seems to render in the incorrect position?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14063320/