Estoy usando gdiplus para "trazar" un texto. En determinadas circunstancias, vemos un "pico" que aparece en la parte superior o inferior del gráfico, y no estoy muy seguro de por qué. Podemos minimizar esto ajustando el ancho de trazo y el tamaño de fuente, pero esa no es una buena solución. Espero que alguien me explique el problema.FileModeWinding y DrawPath hacen que aparezcan picos impares
Y el ejemplo de código que genera este 4, su contorno, y la púa (no intencional)
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);
Estoy convencido de que el Spike en la parte superior de la 4 se debe a la región de forma similar dentro de los cuatro. La documentación sobre fillmodewinding parece apuntar a esto. También probé FillModeAlternate, sin cambios. No estoy seguro de cómo recuperarse de este problema. ¿Alguna sugerencia? – reuscam
Dudo que el modo de llenado sea el problema. ¿Has intentado ejecutarlo en una máquina con un controlador de video diferente? –
Sí, tengo, los mismos problemas. La fuente de arriba es Impacto. El problema no ocurre con Arial con el mismo tamaño de letra, ancho de trazo. – reuscam