0001Name_Not_Found2011/05/11(水) 15:02:49.91ID:uj4WuUJf
arcだけしか使わない場合ならmoveToは不要だと思うんですよ
>>279
注意: fill メソッドがと呼ばれるときはどんな開いている図形は自動的に閉じられ、 closePath メソッドを使う必要はありません。
なるほど arcで複数の円を作る場合ならmoveToはいらないという話です
矩形やlineToなどを使う場合は別です
fillやstroke、closePathを呼び出すまでarcを複数回呼び出した場合、それは1つのパス、って事
真円ならいらないね
弧だけなら線と組み合わせる場合があるからいる
moveToが要る要らないじゃなくて、要るとき底辺コーダーが罠に嵌らないように、ご丁寧にそういうサンプルコードが書かれてるんだよ
で、そのサンプルが伝播して『ほとんどのサンプルコードには使われている』状態になってる
大元がどこかは分かるだろ
fill,stroke,closePathが不要なのはfillRect,strokeRect,clearRectだけだね
>>289
上の方でちょっと話題になってるのと関連するけど、
beginPathが無いのとfillが1度だけしか呼ばれてないから1つの図形
と見なされてる それと話題それるけどそのサイトいいね
ログインしなくても投稿できるのか
createRadialGradientの座標がどちらも一緒になってるよ
下は
var crg2 = ctx.createRadialGradient(150, 50, 10, 150, 50, 100);
かな?
あとfillでパスは閉じるのでclosePathは不要
あ、あと円グラデーションの終了点がかなり外側だから黒になり切らないね
100じゃなくて50じゃ?
var crg2 = ctx.createRadialGradient(150, 50, 10, 150, 50, 50);
なるほど、勉強になりました
グラデーションをつかうと一つずつ描画しないといけないのが難点ですね
よくわからん。
1つのオブジェクトのパスを指定して変換かけて描画する。
の繰り返しでいいだけじゃん?
>>298
save()
translate() rotate() translate()
fillRect()
restore()
translate() rotate() translate()
fillRect()
restore()
以下繰り返し
でしょ
当然rotateや2回目のtranslateの中身は変えないと全部重なるだけだが 多分そんな感じで作ったんですが最初から作りなおしたらできました。
なんで最初のが動かなかったのか原因は分かりません。
ありがとうございます
translateで横に100ずらしたいのに、何故かxとyの分だけ余計にずれてます
http://jsfiddle.net/0fs1dhfj/
座標10:10に100x100の正方形を描画して、右方向に100ずらした位置に正方形を描画したいんですが
これ、正方形と正方形の間にスペースが空いてしまいます。
どうしてこうなるんでしょうか? 理解できました
translateで移動した位置が座標0:0となるんですね
transformって歴史的な理由で残されてるってw3cに書いてあったけどその歴史的な理由知ってる?
それを語るなら秦の始皇帝まで遡る事になるが良いかな?
canvas自体そんなに歴史があるわけじゃないのに何だろうね?
アフィン変換、行列変換の事を言ってるんだろうか?
Most of the API uses SVGMatrix objects rather than this API. This API remains mostly for historical reasons.
(”APIのほとんどは、SVGMatrixは、このAPIのではなく、オブジェクトを使用します。このAPIは、歴史的な理由のために主に残る。”)
確かにtranseformメソッドを呼ぶよりscale,rotate,translateメソッドをそれぞれ呼んだほうが扱いやすい気がする
cssにはskewが実装されてるのにcanvasには実装されてない
中途半端なのがtransformである
奥行きをつけるのにcssからなら楽勝だがcanvasでやると知識がないと無理
0310じゃがりきん2015/11/09(月) 19:55:12.13ID:jxiwh9if
>>310
:::::::::::::::::::: ::::::::::/ ):::::::::
:::::(\::::::: / / ):::::::::::
:::::/\\ / / /ヽ::::::::::::
:::: ヽ \\ ィユ, / / / /::::::::::::::::
:::: ( \ \\ ( ^ω^) l 三 / / ):::::::::::::::
:::::::ヽ ヽ . ミヽヽ | | / 二 / /
::::::: ( \ ヽミ ヽヽ | .| + / 二 ___/ヽ
::::... /ヽ ヽ ニ ヽヽ |,,,| ┼ // ニ _______/
:::. ヽ____ ニ ヽ`l ヽ__// ニ ____ノ
ヽ___, ニ l :: ′ ニ ___ノ
ヽニ -‐ ,l :: __ ≡ __ノ+ ┼ * :::::::::
ヽ---'''ヽ、 ,,,;''''='''''__ + ┼ + .::::::::::
:::::... + ┼ + EEi''!Q.Qー-、___'''''ー-、 :....::::::::::::
:::::::.... + ┼ EEi. Q. Q +'''ヽ ..:...::::::::::::::::::::
:::::::::::::::::..... + EEi. Q. Q ┼ :....:::::::::::::::::
::::::::::::::::::::....: + * EEi Q Q .....:::::::::::::::::
::::::::::::::::::::::::::... + EE! Q @.....:::::::
::::::::::::::::::....::....::. カカ @...::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::
私は不死鳥ハメ鳥。何度dat落ちしても蘇る。
世界中にあふれるさまざまなハメ撮り動画・画像を知っている。
でもただひとりの不幸な男が欄検眼段にHITしてしまい、
その男と一緒に滅びていった女達のことを私は忘れない。
私の名は不死鳥ハメ鳥、ラーミアの末裔。 0312じゃがりきん2015/11/17(火) 20:27:02.10ID:t8dBkVyD
0313Name_Not_Found2015/12/21(月) 20:53:05.06ID:tr4v3gJV
描かれたcanvasをSNSに簡単にアップできるようなライブラリなどはありますか?
canvas部分をクリック→ポップアップでtwなどのアイコンリスト→
選択→canvasを画像として投稿、のような感じにしたいです。
普通にcanvasを右クリで画像を保存してからアップしたほうがいんじゃね?
>>314
313ですが、それを一連的に行いたいのです。 var cvs = document.createElement('canvas');
cvs.width = 300;
cvs.height = 300;
ctx = cvs.getContext('2d');
var bcnt = 10;
var wblur = 0.03;
var hblur = 50;
ctx.fillStyle = 'rgba(0,0,0, '+(0.5/bcnt)+')';
for(var i=0;i<bcnt;i++) {
ctx.beginPath();
ctx.moveTo( 20, cvs.height/2 );
ctx.arc( 20, cvs.height/2, 200+hblur/bcnt*i, Math.PI*(1.9-wblur/bcnt*i),Math.PI*(0.1+wblur/bcnt*i));
ctx.closePath();
ctx.fill();
}
物体に落ちる影ではなく伸びる影を表現したいのですが、重ねてぼかすのではループを回すだけ負荷が掛かるので、ループを避けたいのですが何か良い方法は無いでしょうか
上の例のbcntを減らすとぼやけ方に段差が出来てしまうのですが、少ない描画指示でbcnt=10程度のぼやけ方を表現したいのです
よろしくおねがいします。
0318Name_Not_Found2016/01/31(日) 12:22:12.78ID:zfC0es6V
0319Name_Not_Found2017/05/18(木) 10:53:32.65ID:gdJaFD6Y
age
0320Name_Not_Found2017/12/12(火) 05:21:20.26ID:MrUcGD8N
【環境】
OS:Linux ブラウザ:Chromium バージョン 57.0.2987.98
【コード】
<canvas id="canvasA" width="640" height="480">
キャンバスA
</canvas>
<script>
var context = document.getElementById('canvasA').getContext('2d');
var image1 = new Image();
image1.src = 'myphoto.png';
image1.onload = function(e){
context.drawImage(image1, 0, 0, 320, 240);
};
</script>
<canvas id="canvasB" width="640" height="480">
キャンバスB
</canvas>
<script>
var context = document.getElementById('canvasB').getContext('2d');
var image2 = new Image();
image2.src = 'myphoto.png';
image2.onload = function(e){
context.drawImage(image1, 0, 0, 640, 480);
};
</script>
とすると、キャンバスBのほうに画像が重なって表示されて
キャンバスAには表示されなくなっちゃうのです。
canvas要素のid名がまったく意味をなさないというか・・・
何か大きなミスを犯しているでしょうか?
>>321
var contextが別のものであるかのように書いてるけど1つめのcontextは再宣言で亡くなってる
varじゃなくてlet/constで宣言してればちゃんとこれでちゃんとエラー吐いてくれるからvarをやめたほうがいい >>322
ご指摘いただけて有り難いです。
imageはimage1とimage2に分けたのにcontextは重複させてしまっていました。
それからvarはブロックスコープを持たず、letやconstなら持つということも
知りました。新しい仕様なんでしょうか。
教えてくださってどうも有難う御座いました。 0324Name_Not_Found2018/05/01(火) 18:50:10.89ID:l1wYHpV1
誰でもできる在宅ワーク儲かる方法
少しでも多くの方の役に立ちたいです
グーグルで検索するといいかも『金持ちになりたい 鎌野介メソッド』
HAVC1
0325Name_Not_Found2018/10/17(水) 06:39:33.43ID:2SQGKt6Z
商品をweb上でテキスト追加なんか編集できるライブラリってないかな?
多分Canvasだと思うんだがスキルなさすぎてわからん。
0326Name_Not_Found2020/08/07(金) 13:28:50.10ID:ESG7uJbW
画像アップロードツールの使い方がいまいち解りません
このコードどこに貼ったらいいですか?
↓
var canvas = document.getElementsByClassName( "wPaint-canvas" );
var ctx = canvas[0].getContext("2d");
ctx.fillStyle = "white";
ctx.fillRect(0, 0, 500, 250);
var img = new Image();
img.onload = function() {
ctx.drawImage(img, 0, 0);
}
img.src = "data:image/png;base64,文字列・・・なんちゃらかんちゃら
0327Name_Not_Found2020/08/07(金) 14:32:25.46ID:ESG7uJbW