• 締切済み

JAVAプログラムについて

あるプログラムに下記に機能を追加したいのですが どのようにプログラムすればよいかわかりません。 プログラム記述方法を教えてください。 (1)赤・緑・青の明るさを数値で指定し、任意の色で描画できるようにしたい。 (2)「色交換」ボタンを追加し、このボタンを押すと、最後に描かれた図形の線の色と塗りつぶしの色が入れ替わるようにしたい。 以上よろしくお願いします。

  • Java
  • 回答数3
  • ありがとう数0

みんなの回答

回答No.4

あ!、すみません、長すぎて途中で切れてるようです(そう言う場合は削除されるのかな?)。

回答No.3

●このプログラムの肝の部分は下記のとおりです。 ▼ CanvasObj 内の下記の部分。 > Color oBackColor = Color.WHITE; > BufferedImage oBIOffScreenForeground; > Graphics2D oG2OffScreenForeground; > Image oIOffScreenBackground; > Graphics2D oG2OffScreenBackground; > int iFigureX0 = -1; > int iFigureY0 = -1; > int iFigureX1 = -1; > int iFigureY1 = -1; > Color oFillColor, oLineColor; > String vsFigureType; > int iLineWeight = -1; > BasicStroke oBStroke; > @Override > public void paint(Graphics oGraphic){ > System.out.println("paint( );"); > Graphics2D oGraphic2D = (Graphics2D)oGraphic; > // ↑ここの Graphics の実態は Graphics2D なので、 > // キャストしてやれば Graphics2D のメソッドが使える. > oGraphic2D.setBackground(oBackColor); > oGraphic2D.clearRect(0, 0, getWidth(), getHeight()); > if( null==oIOffScreenBackground ){ > oIOffScreenBackground = createImage( > getSize( ).width, getSize( ).height); > oG2OffScreenBackground = > (Graphics2D)oIOffScreenBackground.getGraphics(); > oG2OffScreenBackground.setBackground(oBackColor); > oG2OffScreenBackground.clearRect( > 0, 0, getWidth(), getHeight()); > // 「oBIOffScreenForeground、oG2OffScreenForeground」には Alpha値(透明度)も格納できるように設定している。 > // "0"が完全な透明なので正確には非透明度と言う事になる。 > oBIOffScreenForeground = new BufferedImage( > getSize( ).width, getSize( ).height, BufferedImage.TYPE_INT_ARGB); > oG2OffScreenForeground = (Graphics2D) oBIOffScreenForeground.getGraphics(); > } > ClearOffScreenForeground( ); > > System.out.println("oApplet.paint( ) : "+ > "width="+Integer.toString(getSize( ).width)+"; "+ > "Height="+Integer.toString(getSize( ).height)+"; "+ > ""); > int w, h; > w = iFigureX1-iFigureX0; > h = iFigureY1-iFigureY0; > if(0>w) w = 0; > if(0>h) h = 0; > if(0<iLineWeight){ > if(iLineWeight>w) w = iLineWeight; > if(iLineWeight>h) h = iLineWeight; > } > // 図形の塗りつぶしを描画 > if( 0<=iFigureX0 && 0<=iFigureY0 && > 0<=iFigureX1 && 0<=iFigureY1 && > null!=oFillColor ){ > if(vsFigureType.equals("Rect")){ > oG2OffScreenForeground.setColor(oFillColor); > oG2OffScreenForeground.fillRect( > iFigureX0, iFigureY0, w, h); > } > if(vsFigureType.equals("Circle")){ > oG2OffScreenForeground.setColor(oFillColor); > oG2OffScreenForeground.fillOval( > iFigureX0, iFigureY0, w, h); > } > } > // 図形の輪郭線を描画 > if( 0<=iFigureX0 && 0<=iFigureY0 && > 0<=iFigureX1 && 0<=iFigureY1 && > 0<iLineWeight && > null!=oLineColor ){ > oBStroke = new BasicStroke(iLineWeight, > BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); > oG2OffScreenForeground.setStroke(oBStroke); > if(vsFigureType.equals("Rect")){ > oG2OffScreenForeground.setColor(oLineColor); > oG2OffScreenForeground.drawRect( > iFigureX0, iFigureY0, w, h); > } > if(vsFigureType.equals("Circle")){ > oG2OffScreenForeground.setColor(oLineColor); > oG2OffScreenForeground.drawOval( > iFigureX0, iFigureY0, w, h); >

  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.1

このプログラムに追加したいのなら このプログラムを示さないと追加できないよ。 いくつか方法があるからまるっきり今のプログラムを無視した形で 作ってしまったら悲しいでしょ。

関連するQ&A

  • Ovalとrectangleを同時に動かすプログラム

    BouncingBallSimulatorという、赤、緑、青、黄色の同じ図形がランダムに画面上で動くというもののプログラムがあるのですが、プログラムのある箇所をOvalからrectangleにかえると円から正方形になりました。プログラムは一見みても何をしているのか分かりません。同時にOvalとrectangleを動かすよう、プログラムを修正したいのですが見当がつきません。できれば。Ovalをrectangleの2倍の速さで動かしたいです。プログラムは長すぎて載せることが出来ませんでした。。なにか、プログラムの行の意味を知るキーワードはあるでしょうか。。。。

  • Wood2002 図形を重ねた時に下の図形は透けるか?

    我が家はWood2000を使用しています。 円形の図形を3つ色は赤、緑、青で描きます。それぞれ半透明に設定するのですが、少しずつ重ねた時に、線は透けて見えても、重なった部分の色は一番上の色だけになってしまいます。 また、斜線にした場合は半透明の指定が出来ずに困ってます。 Wood2002の場合は色が重なった場合は例えば赤と青が重なって紫というようになるのでしょうか? 斜線もちゃんと重なって見えるのでしょうか? 明日頼まれた人に渡すのですが、その人はWood2002なので、もし変更が出来るのなら、その場でやろうと思います。宜しくお願いします。

  • マウスイベントを利用した線描きアプリをVBで作成できず困っています。

    フォームを、PictureBox1、CommandButton1、Frame1、Frame1内にOptionButton1,2,3 Frame2、Frame2内にOptionButton1,2,3,4,5、Frame3、Frame3内にOptionButton1,2,3とし、 PictureBox1にマウスドラッグ、マウスクリックを使って線を描くVBソフトを作成しようと思います。このとき、筆の種類から、次の3種類選べます。 鉛筆・・・マウスドラッグによる線描きで、「マウスによるフリーハンド描画」を基本。 直線・・・クリックした2点間を直線で結ぶ。 ジグザグ・・・次々とクリックした点間を直線で結ぶ。 描画するとき、次の2つのオプションも利用できるようにする。 色オプション 黒、赤、緑、青、黄の5色がオプションボタンの選択で選ぶことができ、描画の線の色に反映させる。色定数は次のように決めておく。 黒・・・RGB(0, 0, 0) 赤・・・RGB(255, 0, 0) 緑・・・RGB(0, 255, 0) 青・・・RGB(0, 0, 255) 黄・・・RGB(255, 255, 0) 太さオプション 線の太さには、細線、中線、太線の3種類がオプションボタンの選択で選ぶことができ、描画の線の太さに反映させる。太さの(DrawWidthプロパティ)値は次のように決めておく。(DrawWidthプロパティを反映させるオブジェクトは、Picture1。) 細線・・・DrawWidth = 1 中線・・・DrawWidth = 3 太線・・・DrawWidth = 5 CommandButton1のクリックで、Picture1に描いた図形を消去する命令を実行させようと思っています。このコードを教えてください。

  • python 図形

    Python(プログラミング言語)で図形や文字を描画(可視化)することができますか? ウィンドウ内に 「○-△-青」みたいに丸と三角と青という文字を線でつなぐみたいなことです。 座標を指定して描画するみたいなことはできるのでしょうか?

  • javaプログラムで背景色を変更するには

    java初心者中の初心者です。背景色の変更方法をお尋ねします。 具体的質問内容: BMI値(肥満度)に応じて背景の色が変化するようにしたい。 BMI値が20未満の場合は黄色、20~24未満の場合は緑、24以上は赤、エラーの場合は青になるように。 actionPerformedで、結果に応じてbgcolorを変更するのだと思いますがよくわかっておりません。 大変あつかましいお願いですが、記述そのものを御教示いただけると助かります。 ソースコードをここに載せたらいいのか迷ったのですが、必要であればお知らせください。 どうぞよろしくお願いいたします。

  • javaのプログラムについての質問です。

    javaのプログラムについての質問です。 javaについて、あまり詳しくないので質問させていただきます。 ボタンを押して円などの色を変えるプログラムで、2色を変える(黄→赤)if文は public void actionPerformed(ActionEvent e) { if (bool) { setBackground(Color.yellow); this.bool = false; } else { setBackground(Color.red); this.bool = true; の様にfalseとtrueを使えばできるのですが、もし3、4色の場合はif文の中をどうしたら良いですか? できれば、ボタンを押すたびに黄→赤→黒→黄…など3~4色のループするようにしたいです。 いろいろ考えたのですが、うまくいきません。どなたか教えて下さい。

    • ベストアンサー
    • Java
  • 朱肉の色を

    エクセルシート上で朱肉の色を出したいのですが、色の選択肢の中にぴったりのものがなく、調整したいのですが、 >オプション>色>変更>ユーザー設定 で赤、緑、青 の数値を入力すっるのだと思いますが、適切な数値にたどり着きません。既に数値を使用されている方、あるいはこの数値に詳しい方がいらしたら、 赤、緑、青 の数値を教えてください。 よろしくお願いします。

  • VisualC++で図形描画スクリプトを組みたい

    VisualC++2008でテキストなどから 数字・文字を読み込んで図形化するスクリプトを組みたいです たとえば  10-10-G-100 とかかれたときに 左から"-"を区切りとしてX始点座標-Y始点座標-色-長さ という風に解釈して図形を描画する 例の場合なら X10・Y10を始点にして緑色の右に長さ100ドットの決められた図形を描画する こんな感じでルール化された図形描画スクリプトを 組みたいと考えているのですが 図形描画の方法がわからず プログラムが組めずに困っています どなたか教えていただけないでしょうか?

  • Javaアプレットで描画の中断がしたい

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

  • javaもしくはjava3Dをつかって

    最初に断っておきますが,初心者です javaもしくはjava3Dを使って正弦波をX軸Y軸の上を動かしたいのですが,うまくいきません.正弦波を表示させるところまではうまくいくのですが動かそうとするとエラーがでてしまいます.動かすプログラムが間違っているのでしょうか? 自分のやり方は線を描画して再計算して何も実行文のないwhile文で時間を稼いでもう一度描画というふうにしています.BASICではこの方法でやりました. また,表示させた画像をボタンから任意に画素数を代えて画像の2値化などができるプログラムなどは作れるでしょうか?こっちはまったくの手付かずなのですが ... どなたか,アドバイスいただける方いましたらお願いします.

専門家に質問してみよう