Apa yang dimaksud PorterDuff.Mode dalam grafis android. Apa fungsinya?


142

Saya ingin tahu apa artinya PorterDuff.Mode dalam grafik android.

Saya tahu bahwa ini adalah mode transfer .

Saya juga tahu, bahwa ia memiliki atribut seperti DST_IN, Multiply dll.


dari penemuan saya baru-baru ini. jika Anda memiliki gambar yang tumpang tindih dan mencoba untuk mengubah filter warna salah satunya, itu akan mempengaruhi gambar lain yang tumpang tindih!
Jonathan

Jawaban:


321

Inilah artikel yang sangat bagus dengan ilustrasi oleh seorang insinyur Google:

http://ssp.impulsetrain.com/porterduff.html

PorterDuff digambarkan sebagai cara menggabungkan gambar seolah-olah mereka "potongan karton yang tidak beraturan" saling bertumpuk, serta skema untuk memadukan bagian-bagian yang tumpang tindih.

Cara Android standar untuk membuat gambar adalah PorterDuff.Mode.SRC_OVER , yang setara dengan menggambar gambar sumber / warna di atas gambar target. Dengan kata lain, ia melakukan apa yang Anda harapkan dan menggambar gambar sumber (yang Anda gambar) di atas gambar tujuan (kanvas) dengan gambar tujuan menunjukkan hingga tingkat yang ditentukan oleh alpha gambar sumber.

PorterDuff infografis dari artikel

Anda dapat menggunakan tombol di bawah ini untuk memahami aljabar yang digunakan Android docs untuk menjelaskan mode lain (lihat artikel untuk penjelasan yang lebih lengkap dengan istilah yang serupa).

  • Alpha Sumber Sa
  • Warna Sumber Sc
  • Da Destination alpha
  • Warna Tujuan Dc

Di mana alfa adalah nilai [0..1], dan warna diganti sekali per saluran (jadi gunakan rumus sekali untuk masing-masing merah, hijau dan biru)

Nilai yang dihasilkan ditentukan sebagai pasangan dalam kurung siku sebagai berikut.

[<alpha-value>,<color-value>]

Di mana alpha-valuedan color-valuemerupakan formula untuk menghasilkan alpha chanel yang dihasilkan dan masing-masing chanel warna.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.