Làm cách nào để tạo canvas trong suốt trong html5?


123

Làm cách nào để tạo canvas trong suốt? Tôi cần phải làm như vậy vì tôi muốn đặt hai bức tranh sơn dầu chồng lên nhau.

Câu trả lời:


194

Theo mặc định, bạt là trong suốt.

Hãy thử đặt một hình nền của trang, sau đó đặt một canvas lên trên nó. Nếu không có gì được vẽ trên canvas, bạn hoàn toàn có thể nhìn thấy nền trang.

Hãy nghĩ về một bức tranh canvas giống như bức tranh trên một tấm kính.


6
Canvas có nền đen trên thiết bị di động nên các bức tranh xếp lớp không hoạt động ở đó. (Ít nhất là trên Chrome dành cho Android)
nicholeous

11
Quá nhiều cho các tiêu chuẩn, như thường lệ.
Triynko

6
Tôi nghĩ rằng những câu trả lời này là thiếu điểm. Tương tự như câu hỏi trên, tôi muốn có hai tấm bạt xếp lớp: bức dưới cùng có hình ảnh tĩnh, nhưng bức trên cùng sẽ có hình ảnh động. Lớp trên cùng này cần phải có nền trong suốt, nhưng cũng phải được 'xóa' và vẽ lại với mọi khung hoạt hình. Có, nó bắt đầu trong suốt theo mặc định, nhưng làm cách nào để bạn đặt lại nó thành trong suốt và bắt đầu của mọi khung hoạt hình mới?
J Sprague

3
Đây là cách xóa canvas bất cứ lúc nào: stackoverflow.com/questions/2142535/…
Omiod,

Vì bạn có quá nhiều phiếu tán thành Ít nhất bạn cũng có thể trả lời câu hỏi chứ? Làm thế nào để bạn làm cho một canvas không trong suốt trong suốt?
DDD

48

Tôi tin rằng bạn đang cố gắng làm chính xác những gì tôi vừa cố gắng làm: Tôi muốn hai bức tranh xếp chồng lên nhau ... bức dưới cùng có hình ảnh tĩnh và bức trên cùng chứa hình ảnh động. Do hoạt ảnh, bạn cần xóa nền của lớp trên cùng thành trong suốt khi bắt đầu hiển thị mọi khung hình mới. Cuối cùng tôi đã tìm ra câu trả lời: nó không sử dụng globalAlpha và nó không sử dụng màu rgba (). Câu trả lời đơn giản, hiệu quả là:

context.clearRect(0,0,width,height);

45

Nếu bạn muốn một cụ <canvas id="canvasID">thể luôn trong suốt, bạn chỉ cần đặt

#canvasID{
    opacity:0.5;
}

Thay vào đó, nếu bạn muốn một số yếu tố cụ thể bên trong vùng canvas trở nên trong suốt, bạn phải đặt độ trong suốt khi vẽ, tức là

context.fillStyle = "rgba(0, 0, 200, 0.5)";

À, tôi đang tìm kiếm sự trong suốt của fillStyle. Cảm ơn!
Workman

3
FYI: các opacitythay đổi sẽ không có hiệu lực nếu có nền trong canvas.
Adam Eberlin

3

Chỉ cần đặt nền của canvas thành trong suốt.

#canvasID{
    background:transparent;
}

1
Câu trả lời này không làm việc trong mọi tình huống, context.clearRect (0, 0, chiều rộng, chiều cao) là giải pháp mà làm việc cho tôi
Dmitriy

2

Sơn hai bức tranh của bạn lên bức tranh thứ ba.

Tôi đã gặp vấn đề tương tự và không có giải pháp nào ở đây giải quyết được vấn đề của tôi. Tôi có một tấm vải mờ đục với một tấm vải trong suốt khác bên trên nó. Phần canvas mờ đục hoàn toàn không thể nhìn thấy nhưng có thể nhìn thấy nền của phần thân trang. Các bản vẽ từ canvas trong suốt ở trên có thể nhìn thấy được trong khi canvas mờ bên dưới thì không.


0

Không thể bình luận câu trả lời cuối cùng nhưng cách khắc phục tương đối dễ dàng. Chỉ cần đặt màu nền của canvas mờ đục của bạn:

#canvas1 { background-color: black; } //opaque canvas
#canvas2 { ... } //transparent canvas

Tôi không chắc nhưng có vẻ như màu nền được thừa hưởng như trong suốt từ phần thân.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.