Ich habe ein Problem mit einem Raster von rects
in einem SVG.SVG Gitter von Rectats in Firefox transparent
Hier ist mein Code über bei jsFiddle: https://jsfiddle.net/swpcpvxL/
Es soll durch Auftragen ein Pixel in einer Zeit, einen Platz machen. Ich benutze eine 1 von 1 SVG rect
, um ein Pixel zu plotten.
var svg = document.getElementById("mysvg");
for (var y = 50; y <= 150; ++y) {
for (var x = 50; x <= 150; ++x) {
var r = Math.floor((x + y)/250);
var g = Math.floor((Math.sin(x/10.0) + 1) * x);
var b = Math.floor((Math.sin(y/10.0) + 1) * x);
var color = "rgb(" + r + "," + g + "," + b + ")";
var k = document.createElementNS("http://www.w3.org/2000/svg", "rect");
k.setAttribute("x", x);
k.setAttribute("y", y);
k.setAttribute("width", "1");
k.setAttribute("height", "1");
k.setAttribute("style", "fill: " + color);
svg.appendChild(k);
}
}
Mein Problem ist, dass auf Firefox die rect
nicht korrekt plotten. Sie zeigen die falsche Farbe (ausgewaschen) und sind tatsächlich durchscheinend. Ich denke, das Problem ist, dass Firefox Anti-Aliasing oder etwas auf der rect
s statt nur die rect
direkt auf dem Pixel, den ich will, plotten. Ich habe auch auf IE getestet - es hat dieses Problem nicht und der Code funktioniert korrekt. Ich habe kein Chrome zum Testen.
Ich habe ein Bild von dem, was es für mich aussieht, in Firefox here hochgeladen. Wie Sie auf dem Bild sehen können, kann ich die Kreise durch die rect
s sehen. Das ist nicht was ich will!
Wie kann ich das Firefox-Problem beheben? Oder gibt es eine bessere Möglichkeit, eine Bitmap in einer SVG wie diese zu erzeugen und zu plotten? Ich habe bemerkt, dass diese Methode ein bisschen langsam ist, also gibt es vielleicht einen besseren Ansatz.
Danke!
Für was es wert ist, kann ich nicht auf meinem Mac repro, es sei denn ich zoome die Seite, und in diesem Fall hat Chrom das gleiche Verhalten, wegen Antialiasing auf halben Pixelpositionen. – Kaiido
Wenn Sie Pixel für Pixel zeichnen möchten, ist es möglicherweise performanter, eine Leinwand zu verwenden. Bündel von 1px-Recs klingt ziemlich teuer zu zeichnen. – the8472
Das scheint ein Bug in Firefox zu sein. Sie sollten [melden Sie es an Mozilla] (https://bugzilla.mozilla.org/). –