Domanda

Surface.blit ha un nuovo parametro in 1.8: miscela. Sono definiti i seguenti valori:

  • BLEND_ADD
  • BLEND_SUB
  • BLEND_MULT
  • BLEND_MIN
  • BLEND_MAX
  • BLEND_RGBA_ADD
  • BLEND_RGBA_SUB
  • BLEND_RGBA_MULT
  • BLEND_RGBA_MIN
  • BLEND_RGBA_MAX
  • BLEND_RGB_ADD
  • BLEND_RGB_SUB
  • BLEND_RGB_MULT
  • BLEND_RGB_MIN
  • BLEND_RGB_MAX

Qualcuno può spiegare cosa significano queste modalità?

È stato utile?

Soluzione

Puoi trovare la fonte per le operazioni di fusione qui: surface.h

Fondamentalmente, ADD aggiunge i due pixel di origine e taglia il risultato a 255. SUB sottrae i due pixel e le clip a 0.

MULT : result = (p1 * p2) / 256

MIN : seleziona il valore più basso di ciascun canale (non l'intero pixel), quindi se pixel1 è (100,10,0) e pixel2 è (0,10,100) , ottieni (0,10,0)

MAX : di fronte a MIN (ovvero (100,10,100) )

E c'è una modalità di fusione aggiuntiva che non è ovvia dai documenti: 0 (o semplicemente lascia il parametro fuori). Questa modalità " timbro " superficie della sorgente nella destinazione. Se la superficie di origine ha un canale alfa, questo determinerà come "forte" ogni pixel è ( 0 = nessun effetto, 255 = copia pixel, 128 : result = .5 * source + .5 * destinazione ).

Effetti utili: per scurire una determinata area, utilizzare il metodo di fusione 0, riempire la superficie di origine / timbro in nero e impostare l'alfa su 10 : (0,0,0,10) .

Per schiarirlo, usa il bianco (255.255.255,10) .

Altri suggerimenti

Quelli sono i metodi di fusione per comporre le immagini una sopra l'altra. Il nome del metodo di fusione indica già l'operazione sottostante.

Le costanti BLEND_ * sono semplicemente alias per le costanti BLEND_RGB_ * e le varianti BLEND_RGBA_ * operano su tutti e quattro i canali (incluso l'alfa canale) anziché solo RGB.

Per informazioni generali sulle diverse modalità di fusione e sui rispettivi effetti, vedere qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top