package AVQ.OEQ.cap; import java.awt.*; import java.awt.image.BufferedImage; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; //作者,著作权人: 罗瑶光,浏阳 public class Monitor_XCDX_Animation_Ica{ public static void XCDX_paint_ica(Monitor_XCDX monitor, Graphics g, BufferedImage image){ try { //ICA monitor.mskr= new int[image.getWidth()][image.getHeight()]; monitor.mskg= new int[image.getWidth()][image.getHeight()]; monitor.mskb= new int[image.getWidth()][image.getHeight()]; monitor.gpcar = new int[image.getWidth()][image.getHeight()]; monitor.gpcag = new int[image.getWidth()][image.getHeight()]; monitor.gpcab = new int[image.getWidth()][image.getHeight()]; Map map= new ConcurrentHashMap<>(); if(monitor.isRcaButton) { for (int i= 0; i< image.getHeight(); ++i) { for (int j= 0; j< image.getWidth(); ++j) { if(monitor.isRedButton) { if(monitor.mskr[j][i]== 0) { map= new ConcurrentHashMap<>(); int size= monitor.getMskFilter(monitor.diffr, monitor.mskr , i, j, 0, map); if(size> monitor.facy){ Iterator< String> it= map.keySet().iterator(); while(it.hasNext()){ String temp= it.next(); if(size> monitor.facy){ int x= Integer.valueOf(temp.split(",")[0]); int y= Integer.valueOf(temp.split(",")[1]); monitor.gpcar[x][y]= 255; } } } } } if(monitor.isGreenButton) { if(monitor.mskg[j][i]== 0) { map= new ConcurrentHashMap<>(); int size= monitor.getMskFilter(monitor.diffg, monitor.mskg , i, j, 0, map); if(size> monitor.facy) { Iterator< String> it= map.keySet().iterator(); while(it.hasNext()){ String temp= it.next(); if(size> monitor.facy){ int x= Integer.valueOf(temp.split(",")[0]); int y= Integer.valueOf(temp.split(",")[1]); monitor.gpcag[x][y]= 255; } } } } } if(monitor.isBlueButton) { if(monitor.isGreenButton) { if(monitor.mskb[j][i]== 0) { map= new ConcurrentHashMap<>(); int size= monitor.getMskFilter(monitor.diffb, monitor.mskb ,i, j, 0, map); if(size> monitor.facy) { Iterator< String> it = map.keySet().iterator(); while(it.hasNext()){ String temp= it.next(); if(size> monitor.facy){ int x= Integer.valueOf(temp.split(",")[0]); int y= Integer.valueOf(temp.split(",")[1]); monitor.gpcab[x][y]= 255; } } } } } } } } }else { monitor.gpcar= monitor.diffr; monitor.gpcag= monitor.diffg; monitor.gpcab= monitor.diffb; } }catch(Exception e) { //e.printStackTrace(); //System.out.println(e.getMessage()); } } }