4

描画アプリケーション用のペイント バケツ ツールに取り組んでいます。

context.getImageDataキャンバス内のすべてのピクセルの色の値を調べるために使用しています。

ただし、キャンバスはデフォルトで白ですが、デフォルトではすべての rgba 値が 0 になっているようです。0,0,0キャンバスが白であっても、黒にはRGBがあり、デフォルトのキャンバス画像データも同様であるため、ペイントバケツツールは黒で輪郭が描かれた形状では機能しません。

だから私の質問は、キャンバスの実際のデフォルトの色(白、または、255,255,255)を反映するようにデフォルトの画像データを変更できるかどうか、またはキャンバスをその色にすばやくクリアする方法です。可能ではあるが非常に非効率的な解決策は、キャンバスをクリアするときに、すべてのピクセルの値を 255 に設定することです。ただし、キャンバスのサイズが原因で、実行時に数秒の遅延が発生します。

私が見落としている他の選択肢はありますか?ありがとう。

4

1 に答える 1

4

空のキャンバスが初期化されますrgba(0,0,0,0)(つまり、透明)

すべてを白に初期化したい場合は、次のように実行します。

ctx.fillStyle = '#FFFFFF'; // or 'rgba(255,255,255,1)'
ctx.fillRect(0,0,canvas.width, canvas.height);

仕様の参照用に、次のように述べています。

キャンバスを初期化するときは、そのビットマップを透明な黒にクリアする必要があります。

于 2012-06-10T20:56:35.817 に答える