1
こんにちは、私の最初の投稿。html5キャンバス、アーチやサークルの背景としての画像
私はキャンバスに円を描いていて、空と地面の部分に分かれていて、時計の手が円の端まで伸びていたので想像してください。 'そして手は動いている。私はそれらの2つの部分のために異なる(背景)画像を持っていたいと思います。今、グラデーションの塗りつぶしがありますが、適切な画像でグラデーションを変更したいと思います。画像は、「パイスライス」の全体部分を埋める必要があります。 これまでの私のコード:
// ground portion of circle
var lingrad=ctx.createLinearGradient(center.x, center.y,center.x,main_radius*2);
lingrad.addColorStop(0,'green');
lingrad.addColorStop(1,'brown');
ctx.fillStyle=lingrad;
ctx.beginPath();
ctx.moveTo(center.x, center.y);
ctx.lineTo(x2, y2);
ctx.arc(center.x, center.y, radius, d2r(z1 + 90), d2r(v1 + 90), false);
ctx.moveTo(center.x, center.y);
ctx.lineTo(x1, y1);
ctx.closePath();
ctx.fill();
// sky portion of circle
var lingrad1=ctx.createLinearGradient(center.x,0,center.x,center.y);
lingrad1.addColorStop(0,'yellow');
lingrad1.addColorStop(0.5,'yellow');
lingrad1.addColorStop(1,'cyan');
ctx.fillStyle=lingrad1;
ctx.beginPath();
ctx.moveTo(center.x, center.y);
ctx.lineTo(x2, y2);
ctx.arc(center.x, center.y, radius, d2r(z1 + 90), d2r(v1 + 90), true);
ctx.moveTo(center.x, center.y);
ctx.lineTo(x1, y1);
ctx.closePath();
ctx.fill();
はあなたに感謝し、私の英語
私がOPを読んだ場合、OPは真ん中に分かれたものよりも柔軟性のあるものが必要だと思う。例えば、https://jsfiddle.net/2j324gsnのように、「クリップ」はまっすぐではない2番目のキャンバスを犠牲にして、gCOが望ましいかもしれません。https://jsfiddle.net/2j324gsn/1 – Kaiido
K3N、あなたのコードはありますので、どうもありがとうございます。私はあなたのコードを実装してうまく動作します...しかし、別の問題が発生しました、私はループ文から分割された円の上に描画する必要があるいくつかのアイコンがあります。私が描画アイコンの前にalert()を置くと面白いことが起きますが、それはアイコンを上に描画しますが、alert()を指定しないと表示されません。私はまだ画像を読み込もうとしていましたが、変数を配列に入れようとしましたが、ループの後に描かれていました。まだまだ... Kaiido、面白そうです。私はまだキャンバスなので、新入り。時間と入力をありがとう。 –
@GoranMitićあなたはおそらく、非同期読み込みの問題を扱っています。多くの画像をプリロードする方法については、[この回答](https://stackoverflow.com/a/18974956/1693593)を参照してください。 – K3N