ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:HTML5のcanvasのリセット) HTML5のcanvasのリセット 2011/10/31 19:35 このQ&Aのポイント HTML5のcanvasを使用したプログラムで、線のリセットについて質問があります。canvasの中で使用するPathを使って描いた線が、reset()関数で正しく消えない問題についてです。何か良い解決策をご存知の方がいらっしゃいましたら、アドバイスをお願いします。 HTML5のcanvasのリセット こんにちは HTML5のcanvasを使用したプログラムを作っています。 ベースの絵を描くコードを関数"base()"とし ベースの絵を消すため、上から白いfillRectを描く関数"reset()"を作りました。 実際にプログラムを実行してみると まず最初にbase()で絵を描き、次にreset()を実行することはできました。 ですが再度base()を実行するとbase()の中のlineToで描いた線が最初より太くなってしまいました。 これはPathを使って描いた線は他のfillRect等で描いた図形とは違いreset()では正しく消せていないということなのでしょうか。一応reset()を実行するとlineToで描いた黒い線が消えているようには見えます。 何か良い解決方をご存知の方いましたらアドバイスお願いします。 質問の原文を閉じる 質問の原文を表示する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー SAYKA ベストアンサー率34% (944/2776) 2011/11/01 12:07 回答No.1 canvasのペン設定は不定だから使う度に目的の設定をするように みたいな記述をどこかで見たことがあるけどどこだったかな・・・ 実際どうなってるか知らないけどfillの後に線の設定をしないままになってるって言うなら 線設定の初期化するものを作ってそれを呼ぶように改造してみたらどうかな 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ パソコン・スマートフォンWindowsWindows 7 関連するQ&A canvasについて HTML初心者です HTML5を勉強しようとおもっています canvasを扱うときに使うjavascriptはHTML5ができる前からの機能をつかっているのですか? (元々javascriptにあった機能をつかってcanvasで絵をかけるようにしているのですか?それともHTML5で新たに作られたjavascriptの関数を使っているのでしょうか?) javascript 配列について HTML5のcanvasにjsで描画する場合、 下記のように複数の図形を描く場合、 配列を用いて表記するにはどのようにすればよろしいでしょうか。 なお、図形の数は決まっていない、また、x,y,width,heightに規則性はないものとします。 ctx.fillStyle = "rgba(0,0,0,1)"; ctx.fillRect(20,10,10,10); ctx.fillStyle = "rgba(0,0,0,1)"; ctx.fillRect(30,10,10,10); ctx.fillStyle = "rgba(64,64,64,1)"; ctx.fillRect(10,20,10,10); ctx.fillStyle = "rgba(64,64,64,1)"; ctx.fillRect(40,20,10,10); … 以上、ご教授いただきたく何卒よろしくお願い致します。 一定時間たつと、リセットしたい C言語であるプログラムを作成中なんですが、一定時間たつとプログラムをリセットしてまた最初からプログラムを実行するような感じにしたいのですが、わからず困っています。 例えば、 if (100秒たったら) { 配列に入ってるデータなどをリセットして、 最初から実行。 } という感じにしたいと思ってます。要するに、プログラムを実行してから、時間を数え、100秒たったらまた1から実行しなおすという風にしたいと考えています。 そういう時間を数える関数などはあるのでしょうか? どなたかご教授おねがいします。 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? OKWAVE コラム リセット動作 HTML、javaScript とも初心者です。 ベース画像に別の画像を上乗せした後、 その箇所の表示をベース画像だけに戻すためにリセット処理すると、 他の部分の表示が消去されてしまいます。 消去されないようにする方法を教えてください。 実際の処理: <form> <input type="button" value="RESET" onclick="rst"> </form> <script type="text/javascript"> function rst() { document.write("<img src='baseimage.png' style='position:absolute;top:100px;left:150px'>"); } </script> これを実行すると、baseimage の表示だけが残り、他の部分が消去されてしまいます。 消去されないようにする方法を教えてください。 よろしくお願いいたします。 めっちゃ綺麗なデジ絵を描く時のキャンバスの大きさ ピクシブとかさまよっていると本当に美麗な絵を描いてらっしゃる方が いるんですけど、拡大図などで見てもほとんどが1000ピクセル以内に 収まっているんですよね…。 私のパソコンって結構小さめな感じでペンタブで描いてるんですけど、 どうも綺麗に見える線画ができないのです。 なるべくアンチエイリアス無しで描こうと思って描いても キャンバスが小さいので解像度上げてもやっぱ線がりザカザカに 見えて汚いんですよね…。 そこで質問なんですけど、あの凄い美麗なイラストを描く皆さんは、 描く時、最初は結構大きめなサイズで描いたりしてるんですか? それでピクシブで投稿できるファイル(jpegなど)に変換するときに レイヤーをひとまとめにして、画像を小さくするんですか? ご回答よろしくお願いいたします。m(__)m ブログなどでのHTMLへの反映のさせ方? こんばんわ。 ブログなどはほとんどの場合、アドレスがパス名までですが、 (例:http://blog.livedoor.jp/hogehoge/) 最終パスの先にindex.htmlを指定しても同じページ内容が表示されるので、トップページは(最後がパス名で終わるアドレスを指定→index.cgiを実行→PerlがHTMLを出力してる わけじゃなく)HTMLファイルそのものを読み込んでるんですよね? そうだとすると、記事数の表示とか、閲覧するだけでカレンダーが今月の表示になっていたりとか、動的に変化していくのはどういう仕組みなんでしょう? 何らかのサーバーサイドプログラムを裏で動かしているのでしょうか? 記事数の反映はCGIプログラムに記事内容を投稿して、CGIプログラムがindex.htmlを書き換える・・・とおぼろげに想像はつくのですが、これで合ってるでしょうか・・・? PHPからCプログラムを実行して実行結果をHTML上に表示 PHP初心者です。PHPからCプログラムを実行して実行結果をHTML上に表示する方法が分からなく困っています。 Cプログラムの中身は、 #include <stdio.h> int main(){ printf("Hello."); } です。 phpの中身は、 <HTML> <HEAD><TITLE>Cプログラム呼び出し</TITLE></HEAD> <BODY> <?php $cmd = "test.exe"; $a = exec($cmd); echo $a; ?> </BODY> </HTML> としており、調べてみるとexec()関数で外部プログラムを実行すると書いてあったのでこのように作成しました。 Chromeで文字コード(UTF-8)の設定 ●質問の主旨 文字コードを常時、"utf-8"に設定したいと考えています。 どのように設定すればよいでしょうか? ご存知の方ご教示願います ●質問の補足 下記コードにて、ファイルを実行し、 "Canvasの練習"という文字列と、 青色の正方形をはさんだ黄色の正方形2つが、 表示させるつもりです。 しかし、実際に実行すると、 図形は意図通り描画されますが、文字列が文字化けします。 HTML5のコードにおいて、 <meta charset="utf-8">を <meta charset="s-jis"> に変更すると、文字化けもなくなります。 "utf-8"のコードがすでに大量に用意されているので、 PCの方の認識を"s-jis"から"utf-8"に替えるためにはどうすればよいでしょうか? PCはWindowsVistaで、ブラウザはGoogleChromeです。 ●コード ・HTML5 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Canvasの練習</title> </head> <body> <h1>Canvasの練習</h1> <canvas id="mycanvas" width="400" height="200"> Canvasに対応したブラウザを使ってください。 </canvas> <script src="mycss.js"></script> </body> </html> ・JavaScript // myscript.js window.onload = function() { draw(); } function draw() { var canvas = document.getElementById('mycanvas'); if (!canvas || !canvas.getContext) return false; var ctx = canvas.getContext('2d'); ctx.fillStyle = "yellow"; ctx.save(); ctx.fillRect(0,0,50,50); ctx.fillStyle = "blue"; ctx.fillRect(100,0,50,50); ctx.restore(); ctx.fillRect(200,0,50,50); } 関数を呼び出すHTMLタグ<body onload="hoge()">について ほぼ独学でJavaScriptを学んでいるので、一般的なコード(HTML含め)の書き方が分かりません。 JavaScriptでは、ボタンや画像をクリックすると動作する、 というものが多いですが、そうではなくて、 (それはonclick等で関数を呼び出せば良いことは分かります) 時計のように、アクセスした瞬間から実行されるプログラムを複数書きたい時は、 どのようにするのが妥当でしょうか。 <body onload="hoge()">では、関数hoge()しか実行されないことになりますよね。 そうではなくて、hoge()以外にもいくつかの関数を実行したい時はどうするのが一般的ですか? ここでC言語のように、hoge()をmain関数(int main(void){})のような扱い方にすると、 hoge()関数内で呼び出されている関数も呼び出されることになりますが、そのような書き方で良いですか? アクセスの効率の良さから考えて、他に良いやり方はあるでしょうか。 ・・・前に困ったので<body>タグを2つ付けて2つの関数をonloadアトリビュートで呼び出すという、 奇々怪々なことをやってみて、それでIE7,FireFox3で動いていたので驚いたんですが、 そんなやり方はさすがに御法度ですよね(笑)。 答えにくい質問だと思いますが、アドバイスお願いします。 HTMLからのBATファイル実行 HTMLと画像(ABC.GIF)、プログラム(123.EXE)、BATファイルをCDに記録して配布したいと考えています。 autorun.infでHTMLファイル(index.html)を実行します。 このHTMLファイルには、同じ場所にあるBATファイルへリンクが貼られています。 ◎BATファイルの内容(Windows Vista用) COPY ABC.GIF C:\TEST COPY 123.EXE "%USERPROFILE%\Desktop\" ◎BATファイルの内容(Windows XP用) COPY ABC.GIF C:\TEST COPY 123.EXE "%USERPROFILE%\デスクトップ\" ブラウザで表示して実際にBATファイルを実行したところ「ファイルが見つからない」というエラーが表示されCOPYコマンドは実行されませんでした。 確かに指定したパスにファイルは存在します。 その証拠に、リンクからではなく、直接BATファイルを実行すると希望した結果が得られました。 何か考えられることはございますでしょうか。 解決方法をお教えいただければ幸いです。 宜しくお願いします。 ファイルドラッグ起動時のデフォルトパス C++でプログラミングをしている物ですが、 プログラム内でファイル名を指定するとき「Data/img.bmp」のように指定できるのですが、 このプログラムの実行ファイルにほかのファイルをドラッグして実行した場合、上のファイル名の指定の仕方だとエラーが出てしまいます。 それは実行ファイルのデフォルトのパスが変わってしまうのだとか・・・ で、ファイルを読み込むときにアプリケーションのパスを取得する関数などを呼び出してフルパスで指定することもできるのですが、読み込むファイルの量が膨大で、すべてにその処理をしていると時間がかかってしょうがありません。 そこで、アプリケーションのデフォルトのパスをプログラムで変える方法を探しているのですが見つかりません。 解決法を探しています。どなたかよろしくお願いします。 メモリリーク VC++ 2010 SP1 MFC使用環境です 現在i以下のサンプルソースをベースに改造しているのですが http://code.msdn.microsoft.com/windowsdesktop/DVD-RW-870205bd その中の関数内で以下の行があります BSTR path = ::SysAllocString(変数)); 改造に当たり関数内で変数の内容を変更させて 同様の処理を複数回行いたいと思っています ここで あれ? と思ったのが ::SysFreeString(path); 実行してなくてリークしないのか? ということなんですが 試しに BSTR path = ::SysAllocString(変数)); を複数回実行してプログラムを終了してみましたが 出力Windowにはメモリリークは出ていないように感じます その判断が間違ってる可能性は否定できないので質問させていただきました 実際今回のような場合 SysFreeString 関数をコールする必要はないのでしょうか? 仮に今回は必要ないにしても関数自体が存在するということは必要性はあると思うのですが どういったときにコールする必要があるのでしょう ヤバいパソコンが壊れたかも!?事前に知っておきたい3つの兆候と対策 OKWAVE コラム ホームページのリンクからプログラムの実行 ホームページのリンクからプログラムを実行 させたいのですが、これって可能でしょうか? もし、できない場合、何か別の方法はあるのでしょうか? 例えば、aaa.exeというプログラムをリンクをクリックすることで実行したいのです。。 (HTMLソースで、<a href>(パス)../aaa.exe</a> で指定すれば出来そうなイメージなのですが、 試す環境がないのです。) ご教授宜しくお願いします。 HTML字数制限対応の文字置換 パスを変数化? お世話になります。HTMLの記述について質問があります。 HTML系の質問が初めてですが、よろしくお願いします。 現在ネットショッピングモールに出店していまして そこでページ作りに挑戦しています。 そこで作りたいページが8000byteの字数制限にひっかかってしまいました。 心当たりがあり、参照する多くの画像を絶対パスで表記しているからです。 ただ、作業の都合上、同モールのサーバの相対パスで表現できる場所に 画像を置くことができず、相対パスでの表記では代替できません。 そこで思い付いたのが、 「http://~~モールサーバ名~~~/当店店舗名/~~」 と絶対パスながら同じ表記となる場所があります。 ここが画像の分だけ字数を食うのがよくないのでここを変数化できないか というものです。 HTMLファイルの最初に zettaipath = http://~~モールサーバ名~~~/当店店舗名/~~ 的な感じで宣言して、それを各リンクの部分に挿入できないかと 考えました。 ちなみに、CSS経験はありません。 SQLやVBの経験はあるのでプログラムの基礎は わかりますが、HTMLやCSSでのソース読解はある程度出来ても 自身でコーディングとなると HTMLはなんとか、CSSは未経験という状況です。 解決方法をご教示頂ければ幸いです。 そもそもこういった制御はHTMLでは出来ない、ですとか こういった代替方法がある、など、実現方法に こだわりはありません。 よろしくお願いいたします。 ダウンロードしたプログラムの場所の移動の可否 こんにちは。今回はダウンロードしたプログラムの場所の移動の可否についてお聞きしたいと思い質問させて頂きました。 いくつかの場所に実行ファイルが入ったフォルダが散らばってしまい、まとめたいと考えているのですが、パスという仕組みが今一理解できておりません。。(パスというのはプログラムの実行には関わらないのでしょうか・・・?) プログラムの実行ファイルの入ったフォルダを、最初ダウンロードした場所から別のフォルダに移動したら機能しなくなりますか? またこれとは別件ですが、インストールに使ったプログラム(インストーラーなど)は削除してもプログラムの実行には影響はないのでしょうか。 非常に初歩的な質問ですが、よろしくお願い致します。 スタートメニュー→プログラム内のフォルダをRemoveDirectoryできない スタートメニュー→プログラム内のフォルダをRemoveDirectoryで消そうとしています。 WindowsXPで実行すると問題なく削除できるのですが、WindowsVistaで実行すると削除できません。 プログラムフォルダのパスはSHGetSpecialFolderLocation関数でCSIDL_PROGRAMSを指定してとってきています。 削除対象のフォルダは空です。 理由のわかる方、どうやったらいいかご教授願います。 App.Pathの失敗について 実行プログラムを選択するフォーム上で以下のようにプログラムを指定し: FullExePath = App.Path & "\program1.exe" 中略:選択条件 FullExePath = App.Path & "\program2.exe" 中略:選択条件 FullExePath = App.Path & "\program3.exe" プログラムを実行するフォーム上で以下のように実行すると、ときどき失敗することがあります: RetVal = Shell(FullExePath) If RetVal = 0 Then MsgBox FullExePath & "の実行に失敗しました。" End If 失敗した場合に備えて上記のようなメッセージボックスを指定しておくと、実行に失敗したときには正しいフルパスが表示されます。 なぜ、プログラムの実行に失敗することがあるのでしょうか? 失敗するのは最初に選択して実行したときではなくて、2回目以降選択したときのようです。 Visual Basic Version 6を使用しています。 Windows XP、Windows 98いずれでも同じ状況です。 Linuxで生成したプロセスに処理をさせるには? Linuxの学んでいる者です。 表題の件について、本を読んだり、ネットで検索したり したのですが、解決ができなかったため質問させて いただきました。 以下に例を挙げます。 1つのCファイルに、「main」と「A」と「B」という関数があるとします。 「main」関数にて、fork()で2つプロセスを生成し、一方のプロセスでは 「A」関数を実行し、もう一方では「B」という関数を実行させます。 「A」という関数は3秒ごとに「1,2,3,…」と数字を出力するもので、 「B」という関数は5秒ごとに「10、20、30、…」と数字を出力するものとします。 こういう場合に、プロセスに「A」や「B」の処理を実行させることができません。 exec関数でプロセスに別のプログラムを実行させることはできますが、 プログラムの実行ファイルのパスを指定して実行させるようなので、 この場合にはうまく使えません。 理解されている方には、本当に些細なことではあると思いますが、 私では解決にまで至らなかったので、ご教授いただければ幸いです。 よろしくお願いいたします。 WIN2000のサービスのパスの変更 サービスプロパティの全般タブの実行ファイルのパスを変更したいのですが、どうすればできますか? あるプログラムを削除し、再インストールしました。その時にホルダを最初のものと違うところにインストールしましたが、サービスのプロパティを見ると前のパスのままになっており、このプログラムを起動できません。 delete演算子によるメモリ解放について MFC MDIプログラミングで、 Genericクラスで点、線、面クラスを作って、 オブジェクトを組み合わせて 3次元図形を作っています。 図形を削除する際、 delete演算子で各オブジェクトの メモリ解放をプログラムしています。 例) delete m_pLine; delete m_pSurface; しかしながら、これらポインタの中には、 アルゴリズム上、既にdeleteされているものもあるため、 既にdeleteしたオブジェクトを更に deleteしようとして 実行時エラーを生じてしまいます。 deleteする前に、 当該ポインタが既にdeleteされているかどうか 判定する関数等あれば if文で回避できると思うのですが、 何か良い方法がありますでしょうか? よろしくお願いします。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ パソコン・スマートフォン Windows Windows 11Windows 10Windows 8Windows 7Windows VistaWindows XPWindows MeWindows NT・2000Windows 95・98その他(Windows) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など