Je dois dessiner un texte RTF sur un arrière-plan personnalisé. J'utilise un contrôle RichTextBox étendu comme décrit par exemple here pour rendre le RTF lui-même. Cela fonctionne très bien si les graphiques sont associés à l'écran. Mais quand j'utilise des graphiques créés à partir d'un bitmap, les polices cleartype ont des fragments noirs horribles comme l'anti-crénelage ne mélange pas correctement le texte avec l'arrière-plan (je dessine l'arrière-plan en premier). Quelle est la raison de cela? Et peut-il être réparé?Dessiner RTF en bitmap à l'aide du message EM_FORMATRANGE produit du texte avec des fragments noirs moche
Exemple de code de la production d'un bitmap laid:
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");
}
}
}
une chose: Graphics.DrawString fonctionne très bien et à faire correctement le texte anti-aliasé.
C'est invariablement un effet secondaire de ne pas initialiser le bitmap correctement. "Je dessine l'arrière-plan en premier" n'est pas une preuve suffisante que vous l'avez fait correctement, vous devez poster un extrait. –
Mis à part la manière assez compliquée que je dessine l'arrière-plan j'ai essayé aussi simple Graphics.FillRectangle ou Graphics.Clear, mais le résultat était toujours le même. Ces méthodes sont-elles suffisantes pour initialiser correctement le bitmap? – user1842413