- 締切済み
JAVAプログラムについて
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- amanojaku1
- ベストアンサー率54% (265/488)
あ!、すみません、長すぎて途中で切れてるようです(そう言う場合は削除されるのかな?)。
- amanojaku1
- ベストアンサー率54% (265/488)
●このプログラムの肝の部分は下記のとおりです。 ▼ 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)
このプログラムに追加したいのなら このプログラムを示さないと追加できないよ。 いくつか方法があるからまるっきり今のプログラムを無視した形で 作ってしまったら悲しいでしょ。