Discussione sull’articolo "Studiare la classe CCanvas. Come disegnare oggetti trasparenti" - pagina 7

 
Nikolai Semko:

è qui che si applica l'algoritmo di miscelazione di altri colori trasparenti:


Dove si trova la trasparenza? Le ombre?

 
Dmitry Fedoseev:

E dov'è la trasparenza? Le ombre?

L'ombra e il bordo del cerchio liscio.
Dopo tutto, il pixel sul bordo della lisciatura ha lo stesso colore ma una trasparenza diversa.
 

Nicholas, non sono in vena di fiori in questo momento. Se c'è un errore nella formula, grazie per averlo segnalato. Non l'ho controllata molto: l'ho implementata e me ne sono dimenticato.

Sarebbe bello applicare le tue conoscenze e i tuoi risultati nel campo di kanvas in qualcosa di utile. Pensateci.

 
Реter Konow:

Nicholas, non sono in vena di fiori in questo momento. Se c'è un errore nella formula, grazie per averlo segnalato. Non l'ho controllata molto: l'ho implementata e me ne sono dimenticato.

Sarebbe bello applicare le tue conoscenze e i tuoi risultati nel campo di kanvas in qualcosa di utile. Pensateci.

Grazie per avermi stimolato, perché questo pensiero non mi è nemmeno passato per la testa :)))
Beh, seriamente, sono molto sorpreso dalle tue parole. Gli esempi inutili sono solo una dimostrazione di possibilità. Un occhio esperto vedrà sempre un sacco di utilità in cose apparentemente inutili. E non sai che quello di cui parlo sempre è molto applicabile in cose molto utili. E tutto questo lo faccio esclusivamente per realizzare cose utili. Solo che non ne parlo finché non ho finito.

 
Nikolai Semko:

Grazie per il suggerimento, perché questo pensiero non mi è mai venuto in mente :)))
Beh, seriamente, sono molto sorpreso da quello che dici. Gli esempi inutili sono solo una dimostrazione delle possibilità. Un occhio esperto vedrà sempre un sacco di utilità in cose apparentemente inutili. E non sai che quello di cui parlo sempre è molto applicabile in cose molto utili. E tutto questo lo faccio esclusivamente per realizzare cose utili. Solo che non ne parlo se non dopo aver finito.

Non ho detto che i tuoi esempi sono inutili. Al contrario. La domanda è: quando li applicherai alla cosa utile? Cioè, stai creando un involucro di quell'utilità che non hai ancora mostrato da nessuna parte. E che cosa sia e per quale scopo - nessuno lo sa. :))

 
Реter Konow:

Non ho detto che i tuoi esempi sono inutili. Al contrario. La domanda è: quando li applicherete alla cosa utile? Cioè, state creando un involucro di qualcosa di utile che non è stato ancora mostrato da nessuna parte. E cosa sia e per quale scopo - nessuno lo sa. :))

Meglio le sorprese che correre davanti al treno.
 
Nikolai Semko:

non che ...

si tratta di Alpha1 e Alpha2.

È inoltre necessario calcolare non solo i colori di miscelazione di nuova formazione, ma anche la trasparenza di nuova formazione.

...

È solo un po' di matematica al livello della settima classe della scuola secondaria. Si ottiene un polinomio lungo e lo si deve ridurre. Il risultato dovrebbe essere un trinomio.

 
Nikolai Semko:
Meglio le sorprese che correre in testa al treno.

Nikolai, tutti sanno già che sei il numero uno della Tela. Non sto discutendo. Puoi dirmi, se lo sai, come recuperare il colore e l'alfa dal colore finale ricevuto da ColorToARGB()? Ho inviato il colore e l'alfa, ho ottenuto il risultato e poi ho bisogno di ottenere il colore e l'alfa originali dal risultato.

Come fare?

 
Реter Konow:

Nikolai, tutti sanno già che sei il primo sulla Tela. Non sto discutendo. Puoi dirmi, se lo sai, come recuperare il colore e l'alfa dal colore finale ricevuto da ColorToARGB()? Ho inviato il colore e l'alfa, ho ottenuto il risultato e poi ho bisogno di ottenere il colore e l'alfa originali dal risultato.

Come fare?

È un mistero per me il motivo per cui R e B vengono scambiati in ARGB da RGB. Ma è un dato di fatto.

È molto semplice:

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

quando si esegue il debug, abbiamo:

z è l'RGB originale

a- l'alfa originale.

È possibile farlo anche tramite union o byte shift, ma il record sarà più lungo.

Quando i componenti del colore sono noti, non uso affatto il record di tipo ColorToARGB(clrRed,48), ma uso la forma esadecimale del record 0x30FF0000 (la stessa di ColorToARGB(clrRed,48)). Molto comodo, chiaro e veloce.

 
Dmitry Fedoseev:

È solo un po' di matematica da seconda media. Si ottiene un polinomio lungo e lo si deve ridurre. Il risultato dovrebbe essere un trinomio.

Se cercate su Google "polinomio" o "trinomio" in Immagini, otterrete molte immagini divertenti :)))