⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rect.java

📁 一个用Java编写的画板
💻 JAVA
字号:
package test.paint;

import java.awt.*;
import java.awt.geom.Rectangle2D;

/**
 *Rect类,实现画矩形的功能
 * 作者:王珍,钟雯
 * 初始时间:2007 5-17
 * 最后一次修改时间:2007 6-17
 */


public class Rect extends RectBoundedShape {
	
        //标记是否填充
	    private boolean fill=false;
	    
	    //画矩形需要的参数,x,y起始点的坐标,w是长,h是高
	    int x, y, w, h;
	 
	    /**
		 * 无参构造函数
		 * Call constuctor of RectBoundedShape
		 */
	    public Rect() {
           super();
        }
	    

		/**
		 * 有模式参数构造函数
		 * Call constuctor of RectBoundedShape
		 */
	    public Rect(Color c, Stroke s, int x, int y, int z) {
	        super(c, s, x, y, z);
	    }
	    
	   
	    /**
		 * 设置当前颜色
		 */ 
	    public void setColor(Color col)
	    {
	    	this.color = col ;
	    }
	    
	    /**
		 * 设置fill的值,是否需要填充
		 * 作者:钟雯
		 * 初始时间:2007 5-17
		 * 最后一次修改时间:2007 5-17
		 */ 
	    public void setIsFill(boolean isFill)
	    {
	         fill=isFill;
	    }
	    
	    /**
	     * 得到fill的值
	     * @return boolean
	     * 作者:钟雯
		 * 初始时间:2007 5-17
		 * 最后一次修改时间:2007 5-17
	     */
	    public boolean getIsFill()
	    {
	       return fill;
	    }
	   
	    
		/**
		 * Draw method,得到当前颜色,得到当前宽度,根据三种模式画矩形
		 * 作者:王珍
		 * 初始时间:2007 5-17
         * 最后一次修改时间:2007 6-17
		 */  
	    public void draw(Graphics2D g) {
	        g.setColor(color);
	        g.setStroke(stroke);
	      
	       
	        if (startX > endX) {
	            x = endX;
	            w = startX - endX;
	        }
	        else {
	            x = startX;
	            w = endX - startX;
	        }
	        if (startY > endY) {
	            y = endY;
	            h = startY - endY;
	        } 
	        else {
	            y = startY;
	            h = endY - startY;
	        }
	       //根据模式画图
	        switch( model )
	        {
	        case 0:
	        	
	            g.drawRect(x, y, w, h);
	            break;
	        case 1:
	        	g.setColor(color.WHITE);
	        	g.fillRect(x, y, w, h);
	        	g.setColor( color );
	        	g.drawRect(x, y, w, h);
	        	break;
	        case 2:
	        	g.fillRect(x, y, w, h);
	        	break;
	        }
	        //如果fill为true,则填充
	        if(fill)
	        {
	            g.fill(getShape());
	        }
	                   
	    }
        
	    /**
		 * 得到边界
		 * 作者:钟雯
		 * 初始时间:2007 5-17
         * 最后一次修改时间:2007 6-17 
		 * @return Rectangle
		 */
		public Rectangle getBounds() {
			
			return getShape().getBounds();
		}
		
		/**
		 * 得到矩形形状
		 * 作者:钟雯
		 * 初始时间:2007 5-17
         * 最后一次修改时间:2007 6-17
		 * @return Double
		*/
		public Rectangle2D.Double getShape(){
			
			return new Rectangle2D.Double(x, y, w, h);
		}
		
		 /**
	     * 判断是否与x,y,w,h构成的矩形相交
	     * 作者:钟雯
	     * 初始时间:2007 5-17
         * 最后一次修改时间:2007 6-17
	     * @param x double
	     * @param y double
	     * @param w double
	     * @param h double
	     * @return boolean
	     */
		public boolean intersects(double x,double y,double w,double h)
	    {
			return this.getBounds().intersects(x,y,w,h);
	    }

		public boolean isImage() {
			// TODO Auto-generated method stub
			return false;
		}
		
		/**
		 * Get shapeData,声明一个StringBuffer变量,把矩形相关信息加入StringBuffer
		 * 临时变量中,用于保存图片信息
		 * 作者:王珍,钟雯
		 * 初始时间:2007 5-17
		 * 最后一次修改时间 2007 6-17
		 */
		public String getShapeData() {
		        int si = 0;
		        for (int i=0; i<MyPanel.STROKES.length; i++) {
		            if (stroke == MyPanel.STROKES[i]) {
		                si = i;
		                break;
		            }
		        }
		        StringBuffer buffer = new StringBuffer();
		        buffer.append(color.getRGB());
		        buffer.append(":");
		        buffer.append(si);
		        buffer.append(":");
		        buffer.append(startX);
		        buffer.append(":");
		        buffer.append(startY);
		        buffer.append(":");
		        buffer.append(endX);
		        buffer.append(":");
		        buffer.append(endY);
		        buffer.append( ":" );
		        buffer.append( model );
		        buffer.append( ":" );
		        buffer.append(fill);
		        buffer.append(":");
		        return buffer.toString();
		    }
		 /**
	      * Set shapeData,声明一个String数组,获得文件中所保存的矩形的相关信息,当打开图片的
	      * 时候,把数组中的内容还原,显示所保存的矩形
	      * 作者:王珍,钟雯
	      * 初始时间:2007 5-17
		  * 最后一次修改时间 2007 6-17
		  */ 
		  public void setShapeData(String data) throws Exception {
		        String[] splits = data.split(":");
		        String flag;
		        color = new Color(Integer.parseInt(splits[0]));
		        stroke = MyPanel.STROKES[Integer.parseInt(splits[1])];
		        startX = Integer.parseInt(splits[2]);
		        startY = Integer.parseInt(splits[3]);
		        endX = Integer.parseInt(splits[4]);
		        endY = Integer.parseInt(splits[5]);
		        model = Integer.parseInt(splits[6]);
		        flag  = splits[7];
		        if(flag.equals("false"))
		        	fill=false;
		        else
		        	fill=true;
		        
		    }
	    

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -