Draw cubic bezier spline between specified points using specified control points. You may also be interested in BezierSubdivide() helper function to calculate control points.

When drawing bezier curves with width greater then one pixel and using color with transparency you may observe some artifacts due to overlapping parts. You can easy remove such a behaviour simply drawing a curve into temporal texture, called mask, using completely black color { 0, 0, 0, 255 }(or CColors::Black if you like to use this helper class) and then just draw rectangle with color your bezier line should have and applying drawn mask as active mask to IRenderer's before drawing rectangle.

bool DrawBezierCurve( // Draw cubic bezier curve of specified width 
    IRenderer *renderer, // Renderer 
    const PointF &p1, // First point 
    const PointF &p2, // Second point 
    const PointF &cp1, // First control point 
    const PointF &cp2, // Second control point 
    const Color &color, // Curve color 
    const float width, // Curve width 
    const float dT = -1); // Custom step value. Set negative to use calculated optimal one
Namespace: nitisa
Include: Nitisa/Render/Utils.h