Il existe une API pour tracer un polygone rempli. Mais pas pour les courbes de Bézier.
En voici une, avec les explications (un peu matheuse...)
En gros, une courbe de Bézier, c'est une série de points, et pour chaque point, deux poignées, indiquant comment la courbe doit arrivé et partir.
Je parle bien d'une courbe fermée, sinon, pas de remplissage bien sur...
Le but étant de savoir si se trouve à l'intérieur de la patate ou à l'extérieur...
Car une simple courbe avec 2 points (et 2 poignées), on peut déjà provoquer une jolie boucle, à l'inverse d'un polygone où le trait droit est un élément simple.
Pour cela, je procède en plusieurs étapes :
1 - je découpe la courbe en arc plus simple, et surtout en arc qui ne change jamais de direction.
En gros, la courbe monte ou descend, mais jamais elle monte puis redescend.
Bien sur, elle peut monter en décrivant un arc.
Pourquoi faire ça ?
Parce que je vais ensuite saucissonner ma patate en tranche de 1 pixel de hauteur, mes arcs ne couperont JAMAIS plus d'une seule fois une ligne donnée (à l'inverse d'une boucle qui peut couper une ligne 2 voir 3 ou 4 fois).
En clair, je dérive ma fonction et je regarde quand elle s'annule. (ce qui signifie que la courbe change de direction)
2 - Pour chaque arc, en le tronçonnant, en tranche de 1 pixel, j'obtiens ainsi un simple segment horizontal d'une certaine largeur, mais UN seul, pas plus. Je considère que le milieu de ce segment est à limite en l'intérieur et l'extérieur.
3 - maintenant que je connais la direction de chaque arc, les segments qui le constitue, et ses limites, je peut tracer l'intérieur et les contours
Vous remarquerez que l'on peut, en plus, tracer le contour en connaissant l'ordre exacte des points entre le départ de la courbe et l'arrivée... Ce que j'ai traduit par un dégradé de couleurs.