Software & Finance





Java Graphics - Count number of pixels used in drawRect function





I have given here Java Graphics program to count the number of pixels used to draw a rectangle by drawRect function.

 

 

Source Code


import java.lang.*;
import java.util.*;
import java.util.List;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.Image.*;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CountPixels_DrawRect extends JPanel {

  static public int pixelDrawnCount = 0;
  static public int width = 300;
  static public int height = 300;
  public java.awt.image.BufferedImage myshape = new java.awt.image.BufferedImage(width,height, java.awt.image.BufferedImage.TYPE_INT_RGB);
  
  public int CountPixelsIn_drawRect(int x1, int y1, int x2, int y2)
  {
      Graphics2D gtemp = myshape.createGraphics();
      gtemp.setPaint(Color.white);
      gtemp.fillRect(0,0,width,width);
      gtemp.setPaint(Color.red);
      gtemp.drawRect(x1,y1,x2,y2);
      
      int pixelcount = 0;
      for(int i = 0; i < width; i++)
      {
         for(int j = 0; j < height; j++)
         {
            int color = myshape.getRGB(i,j);
            int red   = (color & 0x00ff0000) >> 16;
            int green = (color & 0x0000ff00) >> 8;
            int  blue  =  color & 0x000000ff;
            if(red == 255 && green == 0 && blue == 0)
            {
               pixelcount++;
            }
            
         }
      }   
      gtemp.dispose();
      return pixelcount;
  }
  
  public void paint(Graphics g) {
     Graphics2D g2 = (Graphics2D)g;
     g2.drawImage(myshape, null, null);
     String buffer = "Number of pixels drawn: " + pixelDrawnCount;
     g2.drawString(buffer, 10, height - 50);
  }
              
  public static void main(String args[]) 
  {
      CountPixels_DrawRect panel = new CountPixels_DrawRect();       

      pixelDrawnCount = panel.CountPixelsIn_drawRect(10,20,100,180);
  
      JFrame frame = new JFrame("Count Pixels Demo");   
      frame.add(panel);
      frame.pack();
      frame.setSize(width,width);
      frame.setVisible(true);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
}

Output