2012-05-07 10 views

Antwort

41

Verwenden Sie globalAlpha. Sie müssen auch mit fillRect zeichnen. clearRect löscht nur Pixel. Es kann nicht teilweise gelöscht werden, also müssen Sie fillRect oder andere Zeichengrundelemente verwenden.

von w3schools.com:

ctx.globalAlpha = 0.2; 
    ctx.fillRect(50,50,75,50); 
    ctx.globalAlpha = 1.0; 
+0

Dies ist die ganze Leinwand transparent macht (auf Chrome atleast) –

+0

Brian, es ist nicht die ganze Leinwand ist klar, nur die Größe und Lage geben Sie es . Das sind diese 4 Zahlen; Die ersten beiden sind die X-Koordinate auf der Leinwand, dann die Y-Koordinate und dann die Größe X und Y des Rect, die Sie löschen möchten. (Beachten Sie, dass die Y-Werte in Canvas größer werden) –

+4

Beachten Sie, dass Sie 'ctx.globalAlpha = 1;' nach diesen beiden Zeilen aufrufen müssen, um weitere Zeichenaufrufe zu verhindern (sogar vorhergehende) die, glauben Sie es oder nicht) davon, auch teilweise transparent zu sein. –

46

clearRect entfernt, was es war, und überlässt es leer. Der beste Weg besteht darin, einen rgba fillStyle-Wert zu verwenden, da er das Rechteck (oder eine andere Form, die Sie zeichnen) nur transparent macht. Der Code wäre:

ctx.fillStyle = 'rgba(225,225,225,0.5)'; 
ctx.fillRect(25,72,32,32); 

(dank How to change the opacity (alpha, transparency) of an element in a canvas element after it has been drawn?)

+4

Ich bevorzuge dies gegenüber der ausgewählten Antwort, da es nicht alle Zeichnungen nach der Verwendung global beeinflusst. –

+0

Sie können den Kontext speichern und wiederherstellen, so dass er global nicht wirksam wird, indem Sie 'ctx.save()' und 'ctx.restore()' um Ihre anderen Kontextänderungen herum verwenden. –

+0

Ich bevorzuge dies über die beliebtesten, weil es konkreter ist: spricht über die Transparenz der Füllung (ich möchte ein Rechteck "reinigen"), nicht die Transparenz einer Operation. Die beiden Lösungen benötigen 4 Zeilen (weil ctx.save() und ctx.restore() den Kontext beibehalten). Wie auch immer, die zwei Lösungen sind gut für mich. – ddcovery

Verwandte Themen