Używam programu gdiplus do "przesuwania" wiadomości tekstowej. W pewnych okolicznościach widzimy "kolec" pojawiający się u góry lub u dołu grafiki i nie jestem do końca pewien, dlaczego. Możemy to zminimalizować, dostosowując szerokość obrysu i rozmiar czcionki, ale to nie jest dobre rozwiązanie. Mam nadzieję, że ktoś może mi wyjaśnić ten problem.FileModeWinding i DrawPath powodują pojawianie się dziwnych skoków.
A przykładowy kod generowania tego 4, jego zarys, a kolec (niezamierzone)
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);
Jestem przekonany, że Spike na wierzchu 4 jest ze względu na podobnie ukształtowany region wewnątrz czwórki. Wydaje się, że wskazuje na to dokumentacja na temat sposobu zapełniania. Próbowałem również FillModeAlternate, bez zmian. Nie wiem, jak odzyskać ten problem. Jakieś sugestie? – reuscam
Wątpię, że problem stanowi tryb wypełniania. Czy próbowałeś go uruchomić na komputerze z innym sterownikiem wideo? –
Tak, mam, te same problemy. Powyższa czcionka to Impact. Problem nie występuje w przypadku Arial przy tym samym rozmiarze czcionki, szerokości obrysu. – reuscam