下記を参考に、canvasを使ってマウスで線を描ける仕組みをつくっているのですが、描いた線を全て消す方法がわからずに困っています。
https://gist.github.com/Cartman0/436459b9b85cfdd …
canvasのエリア内ではなく、canvasを置いているHTMLにあるaタグでくくったリンクを押すことで非同期によって消したいのですが、どのようなコード(関数?)を書いて、どのように実行すればよいのでしょうか。
ご存知の方がおられましたら、ご回答いただけますと幸いです。よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
ANo1です。
解決したのかどうかわかりませんが・・・
一番簡単な例として、ご提示のサンプルに以下を追加すればクリアできるようになりますね。
◆HTML
<div><a href="#" id="hoge">クリア</a></div>
◆SCRIPT
//7.キャンバス クリア処理
document.getElementById('hoge').addEventListener('click', function(e){
ctx.clearRect(0, 0, 540, 320);
e.preventDefault();
}, false);
具体的なコードまでご提示いただきまして、ありがとうございました!これだけのことでたくさんの学びがありました。せっかく持っているオライリーの本を本棚の肥やしにしていないで、きちんと学びたいと思います。
No.1
- 回答日時:
こんにちは
canvasに描かれた線や図形等は全体でひとつの図になっています。
これをクリアするには、clearのメソッドを利用するか、新しく(上から)矩形等で塗り潰すことでも可能です。どちらの場合も範囲の指定が出来ますので、全体とは限らず部分的な消去をすることもできます。
(範囲にcanvas全体を指定すれば、全消去になります)
具体的なメソッドとしては、clearRect()またはfillRect() メソッドなどを利用なされば良いでしょう。
http://www.html5.jp/canvas/ref/method/clearRect. …
>canvasを置いているHTMLにあるaタグでくくったリンクを押すことで
>非同期によって消したいのですが~
ページ内で完結している処理なので、非同期云々は関係ないと思いますが、該当するリンク要素のクリックイベントとして、上記のctx.clearRectなどの処理を設定しておけば実現できるはずです。
ただし、ご提示のサンプルではctxオブジェクトが匿名関数のなかで設定されていますので、そのスコープの範囲内に記述する必要がありますね。
丁寧なご回答をいただき、ありがとうございました。
canvasの概念的なことも漠然としていて、手のつけようがなかったので、大変、参考になりました。
また、匿名関数の辺りも曖昧だったので、ご指摘いただき、大変、ありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- 美術・アート トレパク疑惑をかけられにくくするには ここ最近いわゆるトレパク警察のいいがかりがが厳しくなったようで 1 2023/08/21 09:59
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- 画像編集・動画編集・音楽編集 ワード。頂点の編集。 4 2022/09/28 14:14
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- 芸術学 透視図法の消失点は、どこに? 1 2023/06/14 00:09
- JavaScript 変数のスコープの問題? 3 2022/06/23 09:32
- その他(悩み相談・人生相談) 下描きの時や普通にイラストを描く時、なぜ一定数、短い線を沢山重ねて描く人がいるのですか? スーッて一 1 2023/01/29 02:32
- マンガ・コミック 漫画の練習方について 1 2022/06/06 19:26
- デザイン スタイラスペンでの描画における遅延 1 2023/06/10 15:41
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
Excel VBA でExcelを終了したい...
-
javascriptからjavaを呼び出したい
-
Labelコントロールに数字を代入...
-
eclipse-Tomcatでのデバッグに...
-
Application.Wait の参照設定
-
【sendkeysメソッドが動かずに...
-
列挙型:次の要素を返す?
-
JAVA コンパイル時のエラー
-
特定の文字でReplaceメソッドが...
-
ウィンドウを最前面にできません
-
ODBCでMoveNextがうまく動作し...
-
PDFファイルから別ウィンドウで...
-
エクセルVBAにおけるON TIMEメ...
-
execute()
-
エクセルのvbaによる書式のコピ...
-
VB.NETで正規表現を教え...
-
Lightboxのグループをループさ...
-
メソッドをstaticにする、しな...
-
タブコントロールの問題 (VB)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
配列のメソッド
-
コマンドプロンプト実行後に画...
-
final修飾子を使っているのに、...
-
ウィンドウを最前面にできません
-
エクセルVBAにおけるON TIMEメ...
-
【sendkeysメソッドが動かずに...
-
VBPをダブルクリックするとたま...
-
Labelコントロールに数字を代入...
-
Application.Wait の参照設定
-
VBA コピーが出来ません…!
-
CALLされていないメソッドを見...
-
描画した線や画像などを消す方法。
-
vbaエクセルマクロ RemoveDupli...
-
JSPで<SELECT>の中にDBから持っ...
-
VB.netで、シリアル通信のタイ...
-
mainメソッドのthrows節で設定...
-
Refreshメソッドの使い方
-
eclipse-Tomcatでのデバッグに...
おすすめ情報