Pencampuran warna hanyalah interpolasi linier per saluran, bukan? Jadi, perhitungannya cukup sederhana. Jika Anda memiliki RGBA1 di atas RGB2, hasil visual RGB3 yang efektif adalah:
r3 = r2 + (r1-r2)*a1
g3 = g2 + (g1-g2)*a1
b3 = b2 + (b1-b2)*a1
… Dengan saluran alfa dari 0,0 hingga 1,0.
Pemeriksaan kesehatan: jika alpha-nya 0, apakah RGB3 sama dengan RGB2? Iya. Jika alpha adalah 1, apakah RGB3 sama dengan RGB1? Iya.
Jika Anda hanya mengunci warna latar belakang dan warna akhir, ada sejumlah besar warna RGBA (tak terbatas, dalam ruang floating-point) yang dapat memenuhi persyaratan. Jadi, Anda harus memilih warna bilah atau tingkat opasitas yang Anda inginkan, dan mencari tahu nilai lainnya.
Memilih Warna Berdasarkan Alpha
Jika Anda mengetahui RGB3 (warna akhir yang diinginkan), RGB2 (warna latar belakang), dan A1 (berapa banyak opasitas yang Anda inginkan), dan Anda hanya mencari RGB1, maka kita dapat mengatur ulang persamaannya sebagai berikut:
r1 = (r3 - r2 + r2*a1)/a1
g1 = (g3 - g2 + g2*a1)/a1
b1 = (b3 - b2 + b2*a1)/a1
Ada beberapa kombinasi warna yang secara teoritis dimungkinkan, tetapi tidak mungkin mengingat rentang RGBA standar. Misalnya, jika latar belakangnya hitam murni, warna persepsi yang diinginkan adalah putih bersih, dan alfa yang diinginkan adalah 1%, maka Anda memerlukan:
r1 = g1 = b1 = 255/0.01 = 25500
… Putih super terang 100 × lebih cerah dari yang tersedia.
Memilih Alpha Berdasarkan Warna
Jika Anda mengetahui RGB3 (warna akhir yang diinginkan), RGB2 (warna latar belakang), dan RGB1 (warna yang ingin Anda ubah opasitasnya), dan Anda hanya mencari A1, maka kami dapat mengatur ulang persamaan sebagai berikut:
a1 = (r3-r2) / (r1-r2)
a1 = (g3-g2) / (g1-g2)
a1 = (b3-b2) / (b1-b2)
Jika ini memberikan nilai yang berbeda, Anda tidak dapat membuatnya sama persis, tetapi Anda dapat menghitung rata-rata alfanya untuk sedekat mungkin. Misalnya, tidak ada opasitas di dunia yang memungkinkan Anda memberi warna hijau di atas merah untuk menjadi biru.