NSBezierPath et fill

fouffouf Membre
12:22 modifié dans API AppKit #1
Bonjour à  tous.

Dans Géodes (ex GeoX) j'implémente les polygones. Pour l'instant, j'arrive à  les créer et à  les dessiner sans problème. Maintenant je voudrais pouvoir les remplir d'une belle couleur. Comme j'utilise déjà  NSBezierPath pour dessiner le polygone lui même, je me suis dis, "Chouette, je vais pouvoir utiliser la méthode fill pour le remplir. Mais non, il ne se remplit pas.

J'ai essayer plusieurs choses parmis lesquelles, enlever le stroke, change le NSWindingRule, mais rien à  faire. Par contre, quand je fais un fillRect: ca marche bien.

Voici le code que j'utilise :
<br />- (void)updatePath<br />{<br />	[_path release];<br />	_path = [NSBezierPath bezierPath];<br />	<br />	NSEnumerator *e = [_pointsArray objectEnumerator];<br />	GPoint *point;<br />	NSPoint coords;<br />	<br />	[_path moveToPoint:[[e nextObject] point]];<br />	<br />	while(point = [e nextObject]){<br />		coords = [point point];<br />		[_path lineToPoint:coords];<br />		[_path moveToPoint:coords];<br />	}<br />	<br />	[_path lineToPoint:[[_pointsArray objectAtIndex:0] point]];<br />	[_path closePath];<br />	_bounds = [_path bounds];<br />	//[_path setWindingRule:NSEvenOddWindingRule]; ca ne change rien<br />	[_path retain];<br />}<br /><br />- (void)draw<br />{<br />	[_path stroke];<br />	[[NSColor yellowColor] set];<br />	[_path fill];<br />	//[NSBezierPath fillRect:_bounds]; ca dessine bien le rectangle en jaune<br />}<br />


Sauriez-vous pourquoi l'intérieur du polygone n'est pas colorié alors qu'il est dessiné.
Merci d'avance  :fouf):

Réponses

  • novembre 2005 modifié #2
    Enlève ces 2 lignes:
    [tt][_path moveToPoint:coords];[/tt]
    Elle fractionne ton path en plusieurs "subpaths", constitués chacun d'une ligne. Et tu le sais comme moi, une ligne peut se tracer, mais ne peut certainement pas se remplir.

    [tt][_path lineToPoint:_pointsArray objectAtIndex:0] point;[/tt]
    Ne sert à  rien à  cause du closePath.
  • fouffouf Membre
    12:22 modifié #3
    Tu es un génie. Merci beaucoup Renaud, ca marche comme sur des roulettes.
Connectez-vous ou Inscrivez-vous pour répondre.