2017-04-20 3 views
0

Ich habe eine Funktion, die eine Schleife hat. In der Schleife wird eine Leinwand erstellt und die Deckkraft eingestellt. Dann legt es die Hintergrundfarbe fest und konvertiert die Leinwand in ein Bild.der FillStyle von Canvas funktioniert nicht

Irgendwie wird die Deckkraft auf der Leinwand gesetzt, aber die Hintergrundfarbe wird nicht gesetzt.

if (remain <= 0) { 
    var canvas = document.createElement('canvas'); 
    context = canvas.getContext('2d'); 
    for (var i = 0; i < img.length; ++i) { 
     if (img[i]) { 
     var opacity = item.opa; 
     context.globalAlpha = opacity; 
     context.drawImage(img[i],0,0); 
     } 
    } 
    var background = mp.colbk; //returns rgb(255,0,0) 
    context.fillStyle = background; 
    var im = new Image(); 
    im.src = canvas.toDataURL(); 
} 

Ich bin nicht sicher, warum mein Hintergrund nicht eingestellt wird. irgendwelche Vorschläge?

Vielen Dank im Voraus.

+0

der Wert für Opazität 0,5 @ moáois –

+0

Nr Opazität funktioniert gut. Ich möchte, dass die Hintergrundfarbe auch funktioniert. Derzeit ist kein Hintergrund eingestellt. Das Bild sollte also sowohl Deckkraft als auch Hintergrund haben. @ moáois –

+0

ich bekomme jetzt einen schwarzen Hintergrund –

Antwort

0

Mit context.fillStyle = background setzen Sie NICHT die Hintergrundfarbe des Canvas. Stattdessen wird die Füllfarbe des Zeichenwerkzeugs für den Zeichenbereich festgelegt.

Mit anderen Worten, context.fillStyle gilt nur für Linien oder auf der Leinwand danach gezeichneten Formen.


auf die Leinwand mit einer Farbe zu füllen, verwenden Sie die fillRect() Funktion:

context.fillStyle = background; 
context.fillRect(0, 0, canvas.width, canvas.height); 

Diese canvas cheat sheet erwies sich als hilfreich sein

+0

Was kann ich verwenden, um einen Hintergrund zu setzen? Was soll ich dann verwenden? @Aloso –

+0

Wenn Sie die Zeichenfläche mit einer Farbe füllen möchten, zeichnen Sie ein Rechteck mit der Funktion 'fillRect()'. Stellen Sie sicher, dass 'globalAlpha' und' fillStyle' beim Zeichnen korrekt gesetzt sind. – Aloso

+0

Wenn Sie nur die Teile des Bildes, die transparent sind, füllen möchten, müssen Sie das Rechteck 'hinter' den anderen Inhalt zeichnen. Dies kann mit 'globalCompositeOperation' erreicht werden. – Aloso

Verwandte Themen