[résolu] Opacité des formes NSBezierPath

RocouRocou Membre
février 2010 modifié dans API AppKit #1
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.

Réponses

  • CéroceCéroce Membre, Modérateur
    19:31 modifié #2
    Je ne comprends pas bien ta question.
    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.
  • RocouRocou Membre
    19:31 modifié #3
    dans 1266578923:

    Je ne comprends pas bien ta question.
    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:
    index.php?action=dlattach;topic=5145.0;attach=3469;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.
  • CéroceCéroce Membre, Modérateur
    février 2010 modifié #4
    Ce qui est codé:
    - 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).
  • RocouRocou Membre
    19:31 modifié #5
    dans 1266588932:

    L'ombre est dessinée pour chaque path.

    :o 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  :)
Connectez-vous ou Inscrivez-vous pour répondre.