• 締切済み

JAVAプログラムについて

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

みんなの回答

回答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% (839/4401)
回答No.1

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

関連するQ&A