1
我需要在自定義背景上繪製RTF文本。我正在使用例如here所述的擴展RichTextBox控件來呈現RTF本身。如果圖形與屏幕相關聯,這可以正常工作。但是,當我使用從位圖創建的圖形時,cleartype字體具有醜陋的黑色片段,如抗鋸齒不會將文本與背景正確混合(我首先繪製背景)。這是什麼原因?它可以以某種方式修復?使用EM_FORMATRANGE消息將RTF繪製到位圖會生成帶有醜陋黑色碎片的文本
的代碼生成一個醜陋的位圖示例:
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工作正常,並正確地得出消除鋸齒的文本。
這總是不進行初始化的一個副作用正確的位圖。 「我先畫背景」並不足以證明你做得正確,你必須發佈一個片段。 –
除了相當複雜的方式繪製背景之外,我還嘗試了簡單的Graphics.FillRectangle或Graphics.Clear,但結果始終相同。這些方法是否足以正確初始化位圖? – user1842413