2

Java Draw で色を拡散しようとしています (これには通常拡散する機能がありません) が、エラーが発生し、それを見つけることができないようです。私がディフューズを行った方法は、私の形を何百回も描画する小さなスクリプトを書くことでした。毎回小さく、色がわずかに異なります. これは私のスニペットです:

import javax.swing.*;
import java.awt.*;
public class DiffuseDraw extends JFrame
{
  //set size of window here
  final int length = 350;
  final int height = 370;

  public DiffuseDraw()
  { 
    super("Graphics Project Window");
    Container container = getContentPane(); 
    setBackground(new Color(0,0,0));
    setSize(length, height);
    setVisible(true);
  }


// my problem comes here:

  public void paint(Graphics g)
  {

    Draw.fillRectangle(g,0,0,length,height,new Color(19,24,32));

    int rad = 325; // size of the biggest circle

    float floatGreen = 0; // Color components for black
    float floatBlue = 0;
    float floatRed = 0;

    int counter = 0; // the counter
    while (counter < 290) {
       rad = rad - 1; // Here we shrink the by a small incriment

       floatRed = floatRed + 87/290;  //red component slowly goes brighter
       floatBlue = floatBlue + 178/290; // blue component slowly goes brighter
       floatGreen = floatGreen + 211/290; // green component slowly goes brighter
       int intRed = (int)Math.round(floatRed);
       int intBlue = (int)Math.round(floatBlue);
       int intGreen = (int)Math.round(floatGreen);

       Draw.fillCircle(g,173,307,rad,new Color(intRed,intBlue,intGreen));
       counter = counter + 1;
    }

  }

  public static void main(String args[]) {
    DiffuseDraw prog = new DiffuseDraw();
    prog.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }  
}

コンパイルして実行すると、黒い画面しか表示されません。問題は色が変わらないことから来ていると推測しています。フロートの赤、青、緑を追加する数値は、一種の青を拡散させたいと考えていたので、表示される青の最も明るい色を取り、ループが実行される回数である 290 で割りました。

4

1 に答える 1

1

それ以外の

87/290178/290、および211/290

使ってみて

(float)87/290(float)178/290、および(float)211/290

これにより、少なくともウィンドウに色が追加されます。問題は、デフォルトで のような数値87/290が評価されること0です。それを a にキャストすると、代わりfloatに望ましい結果が得られ0.3ます。

于 2012-12-12T03:29:08.850 に答える