J'utilise gdiplus pour "masquer" un textout. Dans certaines circonstances, nous voyons un "pic" apparaissant en haut ou en bas du graphique, et je ne suis pas sûr de savoir pourquoi. Nous pouvons minimiser cela en ajustant la largeur de la course et la taille de la police, mais ce n'est pas une bonne solution. J'espère que quelqu'un peut m'expliquer le problème.FileModeWinding et DrawPath provoquent l'apparition de pics impairs
Et l'exemple de code générant ce 4, son contour, et la pointe (involontaire)
GraphicsPath path(FillModeWinding);
path.AddString(text,wcslen(text),&fontFamily,StateInfo.TheFont.TheWeight,(REAL)minSize,PointF((REAL)ptStart.x, (REAL)ptStart.y),&sf);
// Draw the outline first
if (StateInfo.StrokeWidth > 0) {
Gdiplus::Color strokecolor(GetRValue(StateInfo.StrokeColor), GetGValue(StateInfo.StrokeColor), GetBValue(StateInfo.StrokeColor));
Pen pen(strokecolor,(REAL)StateInfo.StrokeWidth);
graphics.SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias);
graphics.SetPixelOffsetMode(Gdiplus::PixelOffsetModeHighQuality);
graphics.DrawPath(&pen, &path);
}
// Draw the text by filling the path
graphics.FillPath(&solidBrush, &path);
Je suis convaincu que le Spike sur le dessus de la 4 est en raison de la région de forme similaire à l'intérieur des quatre. La documentation sur fillmodewinding semble pointer vers ceci. J'ai également essayé FillModeAlternate, sans changement. Je ne suis pas sûr de savoir comment récupérer de ce problème. Aucune suggestion? – reuscam
Je doute que le mode de remplissage soit le problème. Avez-vous essayé de l'exécuter sur une machine avec un pilote vidéo différent? –
Oui, j'ai les mêmes problèmes. La police ci-dessus est Impact. Arial n'a pas de problème avec la même taille de police, la même largeur de trait. – reuscam