2010-03-31 37 views
7

Tôi chỉ mới bắt đầu với phát triển Android và tôi đến từ thế giới JavaScript/HTML nên hiện tôi đang điều tra khả năng của SDK Android.Hoạt động tổng hợp trong Android Canvas

Canvas HTML 5 hỗ trợ hoạt động tổng hợp (Xem here).

Điều này có thể thực hiện được trong Canvas Android không? Tôi đã quét API của lớp Canvas nhưng không thể tìm thấy gì hữu ích. Tôi cần ít nhất thao tác tổng hợp "nguồn-in" hoặc (nếu điều này là không thể) "nguồn-trên đỉnh".

Trả lời

8

Chế phẩm được xử lý bằng cách vẽ trên Canvas với một Paint sử dụng PorterDuffXfermode.

Paint p=new Paint(); 
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN)); 
canvas.drawBitmap(bitmap, 0, 0, p); 

Xem here để biết thêm thông tin. Tôi cũng đã quản lý để ghi đè lên onPaint để chúng tôi có thể áp dụng thành phần này cho các yếu tố vẽ chủ đề.

1

Tôi chưa từng xem xét các loại hoạt động đó trước đây, nhưng tôi nghĩ có cách để thực hiện chúng bằng cách sử dụng hình dạng Rect. Bạn có thể xác định các hình chữ nhật để đánh dấu các khu vực nào sẽ được vẽ vào khung vẽ hoặc hình ảnh nào cần lấy ra khỏi hình ảnh nguồn và lớp Rect có một số tính năng so sánh được tích hợp sẵn. Ví dụ để bắt chước một nguồn, bạn có thể sử dụng setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination) để làm cho hình chữ nhật mới của bạn chỉ có diện tích giao nhau của hai hình ảnh. Sau đó, bạn có thể sử dụng hình chữ nhật đó làm đối số trong một trong các lệnh vẽ của Canvas, yêu cầu nó chỉ lấy các pixel từ hình ảnh nguồn nằm bên trong hình chữ nhật đó. Sau đó, bạn điều khiển bản vẽ trong trục Z theo thứ tự trong đó các lệnh vẽ được thực hiện.

+0

Cắt đơn giản bằng hình chữ nhật là không đủ. Tôi cần mặt nạ alpha phức tạp. – kayahr

+0

Tôi vừa xem hai hình ảnh mẫu được hiển thị trong liên kết của bạn - các ví dụ nguồn và trong nguồn không xuất hiện để có bất kỳ mặt nạ alpha nào. Nếu đó là những gì bạn đang sau, offhand tôi không biết làm thế nào để làm điều đó. Canvases hỗ trợ tính minh bạch giữa các lớp hình ảnh được vẽ trên đầu trang với hình ảnh đã có sẵn trong suốt, nhưng ai đó có kinh nghiệm hơn sẽ phải cho chúng tôi biết liệu có thể tự động trộn không. –

1

Tìm thấy bản thân. PorterDuffXfermode thực hiện tất cả các chế độ tổng hợp này.

Các vấn đề liên quan