Was bedeuten die Füllmethoden in pygame?
-
03-07-2019 - |
Frage
Surface.blit hat einen neuen Parameter in 1.8: Mischung. Die folgenden Werte sind definiert:
-
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
Kann mir jemand erklären, was diese Modi bedeuten?
Lösung
Sie können die Quelle für die Mischoperationen finden Sie hier: surface.h
Grundsätzlich ADD addiert die beiden Quellpixel und Clips das Ergebnis bei 255 SUB die beiden Pixel und Clips bei 0 subtrahiert.
MULT
: result = (p1 * p2) / 256
MIN
: Wählen Sie den unteren Wert jedes Kanals (nicht das ganze Pixel), so dass, wenn pixel1 (100,10,0)
und pixel2 ist (0,10,100)
, Sie (0,10,0)
bekommen
MAX
: Gegenüber von MIN (d (100,10,100)
)
Und es gibt einen zusätzlichen Mischmodus, die aus der Dokumentation nicht offensichtlich ist: 0
(oder nur den Parameter auslassen). Dieser Modus wird „Stempel“ Quelloberfläche in das Ziel. Wenn die Quelloberfläche einen Alphakanal aufweist, wird diese festzustellen, wie „stark“ jedes Pixel (0
= keine Wirkung, 255
= kopieren pixel, 128
: result = .5*source + .5*destination
)
Nützliche Wirkungen: einen bestimmten Bereich verdunkeln, verwendet Mischmodus 0, füllen Sie die Source / Stempeloberfläche schwarz und alpha gesetzt 10
. (0,0,0,10)
Um es leichter zu machen, verwenden Sie weiß (255,255,255,10)
.
Andere Tipps
Das sind Füllmethoden für Compositing Bilder auf der jeweils anderen. Der Name des Mischmodus zeigt Ihnen bereits die zugrundeliegende Operation.
Die BLEND_*
Konstanten sind einfach Aliasnamen für die BLEND_RGB_*
Konstanten und die BLEND_RGBA_*
Varianten arbeiten auf allen vier Kanälen (einschließlich des Alphakanal), um nur RGB entgegengesetzt.
Für allgemeine Informationen über die verschiedenen Füllmethoden und ihre jeweiligen Auswirkungen finden Sie unter hier .