2011-02-08 6 views
5

Ho guardato un po 'e pensano che la risposta alla mia domanda è "no", ma qui va:Imposta la modalità di fusione per disegnare i tratti?

con JavaScript e un tag canvas, posso disegnare linee ben alfa-miscelati con stroke().

Questo è un sacco di divertimento, ma mi piacerebbe fare un ulteriore passo in avanti impostando il metodo blend per il tratto.
ad esempio, sembra che stia usando il classico src * (alpha) + dst * (1 - alpha), e mi piacerebbe qualcosa come src + dst, per ottenere un additivo blending.

Questa pagina: http://www.andersriggelsen.dk/OpenGL sembra che si stia combinando pixel per pixel, che vorrei davvero evitare.

risposta

6

Le uniche "metodi di fusione" supportate nativamente dal contesto HTML5 tela sono la Global Composite Operations:

  • source-atop
  • source-in
  • source-out
  • source-over
  • destination-atop
  • destination-in
  • destination-out
  • destination-over
  • lighter
  • darker (non è più nelle specifiche)
  • xor
  • copy

Vedi this link per un eccellente esempio interattivo animato delle modalità. La modalità di aggiunta/schermata che desideri, tuttavia, non è tra questi.

Se questa funzionalità è importante per te, ho scritto lo free context-blender library per fondere due tele (o regioni di esse) usando le modalità di fusione in stile Photoshop. Come dici tu, gli interni di questo (necessariamente) eseguono operazioni pixel per pixel. Non è nemmeno veloce come una modalità di compositing nativo, ma non è neanche lento. Permette comunque di eseguire operazioni di tratto e riempimento nativo su una tela (in genere non in linea), quindi di comporre l'area di sfondo su un'altra.

E sì, il miscelatore di contesto supporta entrambe le modalità di fusione "schermo" e "aggiungi". :)

+0

wow, risposta fantastica, grazie. –

+1

hai ragione - le operazioni fornite non danno veramente "Aggiungi", potrei anche indagare su "Più leggero" per vedere se è abbastanza vicino a quello che sto cercando. .. dolce! è chiusa ! darò un'occhiata anche alla tua libreria Blender.potrebbe essere che una combinazione dei due potrebbe ottenere sia la velocità sia una sufficiente precisione per il mio utilizzo. grazie ancora. –

+1

Incredibile che non vi sia alcuna modalità di fusione additiva per canvas. La più semplice di tutte le modalità di fusione da implementare e così importante da avere! –

Problemi correlati