Tôi đang cố giải quyết sự cố với android ColorFilters
. Tài liệu rất kém, vì vậy phương pháp chính là thử các biến thể khác nhau.Android ColorFilter - Chế độ Porter-Duff
Sự cố:
Có một ảnh bitmap. Một số pixel có alpha = 255, các pixel khác có alpha = 0. Tôi đang cố gắng vẽ một vòng tròn với một màu cụ thể. Tôi muốn kênh alpha không thay đổi trong bitmap, nhưng trong khi vẽ, tôi muốn nhân một màu với bitmap-alpha.
Vì vậy, trong khi vẽ hình tròn, tôi muốn pixel có alpha = 0 không được vẽ, nhưng pixel với alpha = 255 sẽ được tô màu mà tôi muốn. Kênh alpha không được thay đổi.
Tôi đang cố gắng sử dụng porter-duff ColorFilter (lớp PorterDuffColorFilter trong sdk android).
có quá nhiều chế độ và không thể hiểu được mô tả trên trang web chính thức ở đây: http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
Tôi nghĩ rằng tôi nên sử dụng DST_ATOP
hoặc SRC_ATOP
, nhưng họ không làm việc như tôi đã mô tả.
Ngoài ra, có một tham số lạ srcColor
trong hàm tạo của bộ lọc màu porter-duff.
Tôi không thể hiểu "Sa" và "Sc" có nghĩa là gì trong công thức [Da, Sc * Da + (1 - Sa) * Dc]
. Nó có thể là từ màu sắc đã được truyền vào constructor colorfilter và nó cũng có thể được thiết lập màu bởi "paint.setColor".
Mọi người đều biết, cách hoạt động?
Bạn có thể google porter duff để xem ý nghĩa của các chế độ này. – Renard
Tài liệu tuyệt vời này giải thích các chế độ PorterDuff với hình ảnh: http://ssp.impulsetrain.com/porterduff.html Chỉ cần lưu ý rằng nó không thêm "src_" như android: vì vậy "IN" = "SRC_IN" –