描画した線や画像などを消す方法

このQ&Aのポイント
  • 初心者の質問ですが、アプレットで描画した線や画像を消す方法について教えてください。
  • 現在、ボタンを押すと描画された数字が表示されるアプレットを作成しています。しかし、数字を消す方法がわかりません。
  • paintメソッドを使用して画像を描画する際、フラグを変更することで画像を表示したり非表示にしたりすることができるようですが、具体的なコードの書き方がわかりません。どのようにすれば描画したものを消すことができるのでしょうか?
回答を見る
  • ベストアンサー

描画した線や画像などを消す方法。

アプレットを勉強している初心者です。 イベントであるボタンを押すと、ある数字が描画される、というものを作ったのですがそれを消す方法で悩んでいます。白い正方形で塗りつぶすのかな、と思ったのですが、手元の入門書のコードだとpaintメソッドの中で if(flag != 0){g.drawImage(myImg,0,0,this); と書くだけでそれを実装できているみたいなんです。「画像が出るボタン」を押すとフラグを1にしてrepaint()メソッドでpaintメソッドを呼び出して(?repaintメソッドの説明があまりなくてrepaintメソッドの効果がいまいちよく分かりません)画像を描画して、「消すボタン」を押すとフラグを0にしてrepaint()メソッドを実行してpaintメソッドを呼び出して(?)フラグが0なので結果何もしない。という流れです。 私の感覚だと消すボタンを押してもpaintメソッド内で何もしないなら画像が出たまんまなんじゃないか?と思っているのですが、ちゃんと画像は消えます。 (本当はコードを全部載せられれば一番いいのでしょうが、本に掲載されているコードなのでムリだと思うので載せません) どういうことが起こっているのでしょうか?また一度描画されたものを消す方法はどういう方法があるのでしょうか? よろしくお願いします。

  • rapun
  • お礼率65% (196/300)
  • Java
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

repaintが、画面を背景色で塗りつぶしてからpaintを実行するためです。

関連するQ&A

  • 勝手にアプレットが停止します

    アプレットが動作不良となる時があます。 アプレットの定周期(1秒、2秒など)の 更新描画にて、repaint()メソッドを呼び出していますが、 Javaからupdate()メソッドが呼び出されず、画面の 描画処理が行われていない状態となっていようです。 調べたところ、アプレットのrepaint()メソッド を呼び出すと、Javaからupdate()メソッドが 実行され、paint()メソッドに記述している 各描画処理が行われるはずですが、下記のように 実行されていないようです。 非常に困っていますので、どなたかご教授お願いします。    repaint()     ↓    update()  ←なぜかJavaから実行要求が来ない     ↓    paint()

    • ベストアンサー
    • Java
  • GDI+で描画した画像を消去するにはどうしたらいいですか?

    GDI+で描画した画像を消去するにはどうしたらいいですか? GDI+のGraphicsクラスのDrawImageメソッドで描画したPNG画像を 消去する方法が知りたいです。 画像の表示位置を図1から図2のように下側に移動させたいんですが 実行してみると図3のようになってしまいます。 なので図3の上側の画像を消去しないと移動したように見えないんです。

  • repaintがpaintを実行してくれません。

    repaint()をおこなっても、paintが実行される場合とされない場合があります。 なぜですか? repaint()で、paintメソッドに指定した描画を必ず実行させたいのですが、 どうしたら良いのでしょうか?

    • ベストアンサー
    • Java
  • Javaアプレットで描画の中断がしたい

    Java初心者です。学校の課題で数学シュミレーションの結果を Javaアプレットで表示するプログラムを作成しています。 この課題のJavaアプレットでは 複素平面のシュミレーション(計算結果を色のグラデーションで表示する)なのですが、 チョイスやボタン、マウスクリックなどによって、 初期条件や、描画方式、表示範囲などを指定することができます。 とりあえず、シュミレーション結果の描画は 試行錯誤の結果表示ができるようになりました。 paint(Graphics g)メソッドで数値計算、及び描画をしています。 (ちなみに余談かもしれませんがダブルバッファリングをしていて、 描画内容をImageとして書き込んでおいて描画するというかたちです。) 「計算途中(計算には結構時間がかかる)に 新たにボタンなどで指定条件が変更された場合、 現在の描画を中断して次の計算と描画を開始できるように プログラムを改良しなさい」というのが今回の課題です。 つまり、「プログラム的にはpaintメソッドが実行されている途中に 特定のイベントが発生したらpaintメソッドを中断し、 もういちど呼びなおしなさい」ということかと思われます。 スレッドを作り、そのスレッドを中断するなども考えました。 インターネットで検索もしてみましたが、 なかなか情報を見つけられず困っています。 学生が作るプログラムなのでそんなに難しいことではないのだと思うのですが 解決できませんでした。 どうぞよろしくお願いします。

  • paintメソッドについて

    repaintメソッドはpaintをすぐに呼び出すのではなく、イベントが終了するまで再描画されないと聞きました。そこで、イベント中でもpaintを即座に呼び出せるメソッドはないでしょうか? どなたかご回答お願いします。

    • ベストアンサー
    • Java
  • iアプリ作成 画像を描画できない

    最初に4つのメニューを表示し、メニュー1を選ぶとある画像を表示し、メニュー2を選ぶとまた別の画像を表示する様なiアプリを作成しています。 その作り方が、メニュー1を選ぶと Manu1Canvas c = new Menu1Canvas(); Display.setCurrent(c); c.exe(); という感じでMenu1Canvasクラスのexe()の内容を実行し画像を描画しています。この時Menu1CanvasはCanvasを継承しておりpaint()メソッドを使い描画をしています。 メニュー2を選んだ場合も同じように、Canvasを継承したクラスで画像を描画しています。 このようにそれぞれのメニュー4つにクラスを作り、その4つのクラスにCanvasを継承させpaint()メソッドを使い画像を描画するという処理内容はおかしいのでしょうか?このようにやるとなぜか画面を切り替える時にDojaエミュレータが終了してしまいます。

    • ベストアンサー
    • Java
  • 再描画の一般的な方法

    再描画の一般的な方法を教えてください。 セレクトボックスとテキストボックスが2つずつ。 □■□□ 2番が選択されています □□□■ 4番が選択されています こんな窓が、別窓に隠れてから復活して再描画する場合、 case WM_PAINT: でセレクトボックスのチェック状態を 調べるのはよくなく、再描画のために、フラグを用意して、 セレクトボックスに変化があった場合はフラグを書き替えて、 テキストボックスの描画はフラグの値を参照した方がいいと 思いました。 この例の場合はセレクトボックスを調べるだけだから セレクトボックスを調べてもいいと思うけど、もっと複雑な計算をしたり 大きなファイルを読み込ませた結果でテキストボックスの値が決まる場合の ことを考えたら、フラグを用意するのがいいと思いました。 でも、セレクトボックスとテキストボックスがもっとたくさんあったり した場合には、フラグの数が多くなるから、フラグを参照するより、 再描画のために、表示に変化があった場合には、窓のクライアント全体を メモリに保存しておいて、再描画ではメモリから表示した方がいいとも 思いました。 たくさんの種類のセレクトボックスとか文字とかがある窓は 普通はどんな風に再描画させているんですか?

  • アプレットで文字列の描画を横を半分に縮小して描画したい。

    java初心者です。 アプレットで文字列を描画するときにdrawStringメソッドで描画すると思うのですが、それでデフォルトで描画する時の横の長さを半分にして描画したいのですが(見た目的には縦長にする感じです)、何か方法はあるでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • Graphics等のイメージの描画

    こんばんわ。 GraphicsクラスのdrawImageメソッドをつかっているですが 描画したあとでイメージだけを消す方法はあるのでしょうか。 APIはみてみましたがGraphicsクラスにはないようでした。 消すとしたら画面全体を消すのしかわからなく、使い勝手が悪いので困ってます。 ちなみにauのオープンアプリを作ろうとしているのでCLDCで使えるのを教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaアプレットで太字を描く方法。

    アプレットを勉強している初心者です。 アプレットで直線を描画するにはdrawLineで描画すると思うのですが、それと同じような感じでそれより太字で描画する方法(メソッドなどが、もしあればそれでも)があれば教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう