[résolu] Opacité des formes NSBezierPath
Rocou
Membre
Bonjour,
je n'arrive pas à obtenir des formes générées à partir de NSBezierPath et "peintes" à coup de [maForme Fill] complètement opaques.
Quand j'ajoute une ombre et que je la décale, elle apparait sous la forme. Comment faire pour éviter cela?
Par contre quand je dessine deux formes l'une sur l'autre même avec des couleurs différentes, celle du dessud recouvre bien celle du dessous mais les ombres se voient!
J'ai bien essayé CGContextSetAlpha (context, 1.0) mais cela n'a pas eu le moindre effet sur l'opacité de mes formes.
je n'arrive pas à obtenir des formes générées à partir de NSBezierPath et "peintes" à coup de [maForme Fill] complètement opaques.
Quand j'ajoute une ombre et que je la décale, elle apparait sous la forme. Comment faire pour éviter cela?
Par contre quand je dessine deux formes l'une sur l'autre même avec des couleurs différentes, celle du dessud recouvre bien celle du dessous mais les ombres se voient!
J'ai bien essayé CGContextSetAlpha (context, 1.0) mais cela n'a pas eu le moindre effet sur l'opacité de mes formes.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
L'ombre s'applique à tous les Bezier paths dessinés tant qu'elle n'est pas désactivée.
Si la couleur est opaque, le Bezier path est opaque, c'est tout.
Montre nous un bout de code et surtout dis-nous ce que tu cherches à obtenir.
Dans un autre fil, j'avais posté cette image:
Comme tu peux le voir, l'ombre du rectangle blanc est décalée vers le bas à droite. Cependant, la ou elle devrait être recouverte par ma forme (à gauche), elle est visible.
- activer l'ombre
- dessiner le rectangle blanc -> son ombre est dessinée
- dessiner le cadre noir -> son ombre est dessinée
- désactiver l'ombre.
Ce qu'il faut faire:
- activer l'ombre
- dessiner le rectangle blanc -> son ombre est dessinée
- désactiver l'ombre.
- dessiner le cadre noir
Autre possibilité:
Il existe une distinction entre la couleur de contour (-[NSColor setStroke]) et de remplissage (-[NSColor setFill]). Or, c'est le même bezierPath dans les deux cas. Il suffit de fixer des couleurs différentes, donner la bonne épaisseur au path et de ne le dessiner qu'une fois.
L'ombre est dessinée pour chaque path. Si tu veux grouper l'ombre pour plusieurs path, il faut utiliser les Transparency Layers (voir Quartz 2D Programming Guide).
Mais bien sûr, c'est logique.
Un grand merci pour ton aide. Ce problème bien loin d'être primordial, m'agaçait prodigieusement