Почему gdi+ неправильно отрисовывает кривые

Всем привет. Я хочу написать парсер svg файлов и отрисовывать векторную графику через gdi+, но когда я пробую ввести данные из svg файла в код, получается неправильно отрисованная кривая безье. Края у кривой получаются неровные. Я пробовал менять значения miterlimit функции SetMiterLimit класса Pen, и другие фукнции пробовал, но ничего не меняется. Для сравнения прилагаю скриншоты: как выглядит кривая в браузерах и в gdi+ со сглаживанием и без; svg код:

<?xml version="1.0" encoding="utf-8"?>
<svg version="1.2" baseProfile="tiny" id="Слой_1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 510 512"
overflow="visible" xml:space="preserve">
<path fill="none" stroke="#000000" stroke-width="32" stroke-miterlimit="10" d="M168,37c0,35.4,39.4,64,88,64"/>
</svg>

с++ код:

Rect paintRect(0, TbHeight, mw->getClRect().right, mw->getClRect().bottom);
Bitmap bmp(paintRect.Width, paintRect.Height - TbHeight);
Graphics* graphics = new Graphics(&bmp);
graphics->SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);
graphics->SetSmoothingMode(SmoothingModeAntiAlias);
float _x = 168;
float _y = 37;
PointF p[] =
{
    PointF(_x, _y),
    PointF(_x + 0, _y + 35.4),
    PointF(_x + 39.4, _y + 64),
    PointF(_x + 88, _y + 64)
};
pen.SetWidth(32.f);
graphics->DrawBeziers(&pen, p, 4);

Ровная кривая в браузерах gdi+ без сглаживания gdi+ со сглаживанием


Ответы (0 шт):