Comment utiliser ClearType avec double mémoire tampon sur Compact Framework?
-
19-09-2019 - |
Question
Quand je dessine une chaîne dans un tampon, la sortie résultante est pas lissées la façon dont je me attends. Ce code illustre le problème ... il suffit de mettre cela dans les Form1.cs d'un projet de dispositif intelligent standard:
protected override void OnPaint(PaintEventArgs e)
{
Bitmap buffer = new Bitmap(Width, Height, PixelFormat.Format32bppRgb);
using(Graphics g = Graphics.FromImage(buffer))
{
g.Clear(Color.White);
g.DrawString("Hello, World", Font, new SolidBrush(Color.Black), 5, 5);
}
e.Graphics.DrawImage(buffer, 0, 0);
}
Par contre, si je dessine simplement la chaîne dans l'objet graphique qui a été passé avec le PaintEventArgs
, il rend en ClearType tout comme je pense.
Je me dis que je dois créer mon tampon graphique d'une manière qui le rend utiliser le lissage des polices, mais je ne vois pas une façon de le faire.
La solution
Il s'avère avoir été un problème simple. En supprimant l'PixelFormat.Format32bppRgb
il a bien fonctionné. On dirait que vous devez vous assurer que vos tampons ont les mêmes formats de pixels ...
Autres conseils
Définissez la propriété SmoothingMode de votre objet Graphics:
g.SmoothingMode = SmoothingMode.AntiAlias;
Vous devez utiliser gdiplus.dll (il existe quelques emballages pour cela), mais il est uniquement disponible sur Windows Mobile 6 Professional (non standard).