Transparence avec Quartz
Chacha
Membre
Salut,
La doc d'Apple explique des choses sur la transparence avec Quartz, mais je n'ai pas réussi à faire la chose suivante :
Je voudrais dessiner deux rectangles qui se coupent, avec chacun une couleur un peu transparente. Je m'attends donc à ce que l'intersection soit un peu plus opaque, mais je n'ai pas réussi à obtenir cet effet.
Aves vous des idées ?
(j'ai essayé le CGContextSetBlendMode, le CGContextSetAlpha, et, bien sûr, le CGContextSetRGBFillColor avec un alpha <1, mais peut-être n'ai-je pas trouvé la bonne combinaison).
+
Chacha
La doc d'Apple explique des choses sur la transparence avec Quartz, mais je n'ai pas réussi à faire la chose suivante :
Je voudrais dessiner deux rectangles qui se coupent, avec chacun une couleur un peu transparente. Je m'attends donc à ce que l'intersection soit un peu plus opaque, mais je n'ai pas réussi à obtenir cet effet.
Aves vous des idées ?
(j'ai essayé le CGContextSetBlendMode, le CGContextSetAlpha, et, bien sûr, le CGContextSetRGBFillColor avec un alpha <1, mais peut-être n'ai-je pas trouvé la bonne combinaison).
+
Chacha
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
+
Chacha
[edit]
Exemple : chaque face de ce cube a la couleur RGBA (1, 1, 1, .25)
Mais quand deux faces se recouvrent, j'aimerais que l'opacité augmente !
[/edit]
[Fichier joint supprimé par l'administrateur]
[tt] [[NSColor colorWithDeviceRed:0.0 green:0.0 blue:0.0 alpha:0.25] set];
[[NSBezierPath bezierPathWithRect:NSMakeRect(50,50,100,100)] fill];
[[NSBezierPath bezierPathWithRect:NSMakeRect(75,75,100,100)] fill];[/tt]
[Fichier joint supprimé par l'administrateur]
Cela dit, c'est bizarre, je n'observe pas la même chose !
[Fichier joint supprimé par l'administrateur]
Pur OpenGL ?
(si c'est le cas l'OpenGL ne gère sans doute pas la transparence pareil que le bezierPath ?)
Ou avec des BezierPath partout ? (rien à voir avec le nain de fort-boyard ;D)
Tu crées un seul gros bezierPath avec dse addBezierPath ou tu en fait un pour chacune des 6 faces en faisant un fill pour chacun des 6 ?
Non, pur Quartz. Je suis dans une NSView (custom view) et je travaille dans un CGContext, avec des commandes CoreGraphics.
Pour chaque face de mon cube (mise dan sun bezierpath), je fais:
[[NSColor colorWithDeviceRed:0 green:0 blue:0 alpha:.25] set];
[bezierPath fill];
[[NSColor colorWithDeviceRed:0 green:0 blue:0 alpha:1] set];
[bezierPath stroke];
+
Chacha
Mais... c'est vrai, ça !
Mon dieu, je suis stupide !
Intuitivement, je pensais que le centre serait plus opaque. Argh ! Merci quand même...
+
Chacha
Oui, oui, en fait ça marchait très bien depuis le début : je suis juste stupide.
Merci à tous, au fait (de m'avoir fait affronter la dure réalité)
+
Chacha
Je me suis fait avoir comme toi, moi : même alors que t'as posté ton cube rose moi aussi je m'attendais à avoir une zone plus sombre que les autres ou en tout cas pas tout aussi uniforme.
Mais en fait je pense que c'est aussi parce qu'il n'y a pas d'effet de lumière : si tu as dans la réalité un cube en verre avec une quelconque source lumineuse dans la pièce, tu verrais les faces différement puisque pas exposées avec le même angle à la source lumineuse.
Etant habitués à ce réalisme, on s'attend donc à avoir ce genre de chose dans ton cas, donc des faces aux rendus un peu différents ou en tout cas un effet de transparence qui rende la zone centrale différente, plus sombre, etc...
Enfin je pense que c'est un peu pour ça qu'inconsciemment on s'attendais à avoir des effets différents selon les faces et leurs "superpositions", en tout cas moi je n'y aurais pas pensé non plus sans que mic nous titille sur ce point