Lasst uns sagen, dass ich ein HTML5-Element Rechteck zeichnen diese mit:HTML5 - Ändern Opazität eines Unentschiedens Rectangle
context.clearRect(25, 72, 32, 32);
Wie würde ich es transparent 50% machen?
Lasst uns sagen, dass ich ein HTML5-Element Rechteck zeichnen diese mit:HTML5 - Ändern Opazität eines Unentschiedens Rectangle
context.clearRect(25, 72, 32, 32);
Wie würde ich es transparent 50% machen?
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;
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);
Ich bevorzuge dies gegenüber der ausgewählten Antwort, da es nicht alle Zeichnungen nach der Verwendung global beeinflusst. –
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. –
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
Dies ist die ganze Leinwand transparent macht (auf Chrome atleast) –
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) –
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. –