我正在使用gdiplus來「敲擊」文本。在某些情況下,我們看到圖形頂部或底部出現「尖峯」,我不確定爲什麼。我們可以通過調整筆畫寬度和字體大小來減少這種情況,但那不是一個好的解決方案。我希望有人能向我解釋這個問題。FileModeWinding和DrawPath導致出現奇怪的尖峯
和代碼示例生成此4,它的外形和穗(無意)
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);
我確信4號頂部的Spike是因爲四個內部形狀相似的區域。 fillmodewinding的文檔似乎指向這一點。我也嘗試過FillModeAlternate,沒有任何改變。我不知道如何從這個問題中恢復。有什麼建議麼? – reuscam 2010-09-23 19:54:53
我懷疑填充模式是問題。你有沒有試過在具有不同視頻驅動程序的機器上運行它? – 2010-10-02 16:33:49
是的,我有同樣的問題。以上字體是Impact。在相同的字體大小和筆劃寬度下,Arial不會出現問題。 – reuscam 2010-10-04 12:48:55