Discussion de l'article "Étudier la classe CCanvas. Comment dessiner des objets transparents" - page 7

 
Nikolai Semko:

c'est ici que s'applique l'algorithme de mélange d'autres couleurs transparentes :


Où se trouve la transparence ? Les ombres ?

 
Dmitry Fedoseev:

Et où est la transparence ? Les ombres ?

L'ombre et le bord du cercle lisse.
En effet, le pixel situé sur le bord du lissage a la même couleur mais une transparence différente.
 

Nicholas, je n'ai pas envie de fleurs en ce moment. S'il y a une erreur dans la formule, je vous remercie de me la signaler. Je ne l'ai pas beaucoup vérifiée - je l'ai mise en œuvre et je l'ai oubliée.

Il serait bon d'appliquer vos connaissances et vos réalisations dans le domaine de kanvas à quelque chose d'utile. Pensez-y.

 
Реter Konow:

Nicholas, je n'ai pas envie de fleurs en ce moment. S'il y a une erreur dans la formule, je vous remercie de me la signaler. Je ne l'ai pas beaucoup vérifiée - je l'ai mise en œuvre et je l'ai oubliée.

Il serait bon d'appliquer vos connaissances et vos réalisations dans le domaine de kanvas à quelque chose d'utile. Pensez-y.

Merci de m'y inciter, car cette idée ne m'avait même pas traversé l'esprit :)))
Eh bien, sérieusement, je suis très surpris par vos propos. Les exemples inutiles ne sont qu'une démonstration des possibilités. Un œil expérimenté verra toujours beaucoup d'utilité dans des choses apparemment inutiles. Et ne savez-vous pas que ce dont je parle toujours est très applicable dans des choses très utiles. Et tout cela, je le fais exclusivement pour réaliser des choses utiles. Je n'en parle pas tant que je n'ai pas fini.

 
Nikolai Semko:

Merci pour le conseil, car cette idée ne m'a jamais traversé l'esprit :)))
Bon, sérieusement, je suis très surpris par ce que vous dites. Les exemples inutiles ne sont qu'une démonstration des possibilités. Un œil expérimenté verra toujours beaucoup d'utilité dans des choses apparemment inutiles. Et vous devriez savoir que ce dont je parle toujours est très applicable dans des choses très utiles. Et tout cela, je le fais exclusivement pour réaliser des choses utiles. Je n'en parle qu'une fois que j'ai terminé.

Je n'ai pas dit que vos exemples étaient inutiles. Au contraire. La question est de savoir quand vous allez les appliquer à la chose utile. C'est-à-dire que vous créez une enveloppe de cette utilité que vous n'avez encore montrée nulle part. Et ce que c'est et dans quel but - personne ne le sait. :))

 
Реter Konow:

Je n'ai pas dit que vos exemples étaient inutiles. Au contraire. La question est de savoir quand vous les appliquerez à la chose utile. En d'autres termes, vous créez une enveloppe pour quelque chose d'utile qui n'a encore été montré nulle part. Et ce que c'est et dans quel but - personne ne le sait. :))

Mieux vaut des surprises que de courir devant le train.
 
Nikolai Semko:

pas que ...

il s'agit d'Alpha1 et Alpha2.

Il est également nécessaire de calculer non seulement les couleurs de mélange de la nouvelle formation, mais aussi la transparence de la nouvelle formation.

...

Il s'agit simplement d'un peu de mathématiques du niveau de la 7e année de l'enseignement secondaire. Vous obtenez un long polynôme, vous devez le réduire. Le résultat devrait être un trinôme.

 
Nikolai Semko:
Mieux vaut des surprises que de courir devant le train.

Nikolaï, tout le monde sait déjà que tu es le numéro un sur Canvas. Je ne discute pas. Pouvez-vous me dire, si vous le savez, comment récupérer la couleur et l'alpha de la couleur finale reçue par ColorToARGB() ? J'ai envoyé la couleur et l'alpha, j'ai obtenu le résultat, et j'ai besoin de récupérer la couleur et l'alpha d'origine à partir du résultat.

Comment faire ?

 
Реter Konow:

Nikolaï, tout le monde sait déjà que tu es le premier sur Canvas. Je ne discute pas. Pouvez-vous me dire, si vous le savez, comment récupérer la couleur et l'alpha de la couleur finale reçue par ColorToARGB() ? J'ai envoyé la couleur et l'alpha, j'ai obtenu le résultat, et ensuite il faut récupérer la couleur et l'alpha d'origine à partir du résultat.

Comment faire ?

La raison pour laquelle R et B sont échangés dans ARGB à partir de RGB est un mystère pour moi. Mais c'est un fait.

C'est très simple :

   color x=0x00112233;
   color y=ColorToARGB(x,0x44); 
   color z=ColorToARGB(y,0);
   uchar a=y>>24;

lors du débogage, nous avons :

z est le RVB d'origine

a- l'alpha d'origine.

On peut aussi le faire par union ou par décalage d'octets, mais l'enregistrement sera plus long.

Lorsque les composantes de la couleur sont connues, je n'utilise pas du tout l'enregistrement de type ColorToARGB(clrRed,48), mais j'utilise la forme hexadécimale de l'enregistrement 0x30FF0000 (la même que ColorToARGB(clrRed,48)). C'est très pratique, clair et rapide.

 
Dmitry Fedoseev:

Il s'agit simplement d'un peu de mathématiques de 7e année. Vous obtenez un polynôme long, vous devez le réduire. Le résultat devrait être un trinôme.

Si tu tapes "polynôme" ou "trinôme" dans Images, tu obtiendras beaucoup d'images amusantes :)))