我需要在自定义背景上绘制 RTF 文本。我正在使用一个扩展的 RichTextBox 控件,例如这里描述的来呈现 RTF 本身。如果图形与屏幕相关联,这可以正常工作。但是当我使用从位图创建的图形时,cleartype 字体有难看的黑色片段,比如抗锯齿不会正确地将文本与背景混合(我先绘制背景)。这是什么原因?它可以以某种方式修复吗?
生成丑陋位图的代码示例:
private void CreateBitmap(string rtf, Rectangle bitmapRectangle)
{
using (Bitmap bitmap = new Bitmap(bitmapRectangle.Width, bitmapRectangle.Height))
{
using (Graphics gr = Graphics.FromImage(bitmap))
{
gr.Clear(Color.Yellow);
// extended RichTextBox control from www.andrewvos.com
RichTextBoxDrawer rtbDrawer = new RichTextBoxDrawer();
rtbDrawer.Rtf = rtf;
rtbDrawer.Draw(gr, bitmapRectangle);
bitmap.Save(@"c:\bitmap.png");
}
}
}
还有一件事:Graphics.DrawString 工作正常并正确绘制抗锯齿文本。