比较两个像素(它们的颜色)

时间:2016-12-04 15:19:58

标签: java random graphics applet drawing

我为我的uni制作项目,我有一件事有问题 - 一切运作良好,但是比较两个像素的颜色存在错误。 我必须计算一些数字的面积,我必须使用MonteCarlo方法。 (生成随机点,计算图中的点数,计算图形区域) 有些要点很好,有些不,我不知道什么是错的,我试图解决这几个小时......

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.*;

public class Runner extends JApplet{

private BufferedImage img;
public ArrayList<Point> w;
public ArrayList<Point> poza;
public BufferedImage output;

public void init(){

    try{
        img = ImageIO.read(new File("figura.gif"));
    } catch (IOException e){
        e.getStackTrace();
        System.err.println("Nie ma obrazkaXD");
    }

}

public void paint(Graphics g){
    w = new ArrayList<Point>();
    poza = new ArrayList<>();
    super.paint(g);
    Random random = new Random();
    int wys = img.getHeight();
    int szer = img.getWidth();
    g.drawImage(img, 0, 0, wys, szer, null);
    for (int i = 0; i < 1000; i++) {
        int x = random.nextInt(wys);
        int y = random.nextInt(szer);
        Point p = new Point(x,y);
        g.setColor(Color.GREEN);
        g.drawOval(y, x, 1, 1);
        Color c = new Color(img.getRGB(y, x));;
            if(c.equals(Color.BLACK)){
                w.add(p);
                g.setColor(Color.RED);
                g.drawOval(y, x, 1, 1);
            }else{
                poza.add(p);
            }
    }

float a = w.size();
float b = poza.size()+w.size();
float poleProstokata = wys*szer;
float pole = a/b*poleProstokata;
}

0 个答案:

没有答案