亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? baseobject.java

?? 用java編寫的畫圖面板程序(有源代碼)
?? JAVA
字號:
/**
 * @(#)G2d.java
 */
package project.paint;

import java.awt.*;
import java.awt.geom.*;
import java.util.*;

public class BaseObject  implements Cloneable{

	public static final int PENCIL=0;
	public static final int LINE=1;
	public static final int RECTANGLE=2;
	public static final int ROUNDRECT=3;
	public static final int OVAL=4;
	public static final int POLYGON=5;	
	public static final int FILL=6;
	public static final int ERASE=7;
	public static final int ROTATE=8;

	public int type; //對象類型
	public float stroke;//畫筆粗細
	public Color color;//漸變色
	public Color color2;
	public int gradientPaint;//漸變類型
	public Point p1,p2;//漸變端點
	protected Paint ptInterface;
	protected Shape shape;
	protected Shape shape2;
	public boolean filled;
	public boolean isSquare;
	public double rotateNum;
	protected LinkedList<Integer> X,Y;
	public BaseObject() {
		X=new LinkedList<Integer>();
		Y=new LinkedList<Integer>();
		stroke=1.0f;
		color=Color.BLACK;
		color2=Color.WHITE;
		gradientPaint=0;
		filled=false;
		isSquare=false;
		rotateNum=0;
		type=99;
	}
	//判斷是否在對象內
	public boolean isCursorIn(int x,int y) {
		try {
			if (shape.contains(x,y))
				return true;
			else
				return false;
		} catch (NullPointerException npe) {	
			return false;
		}
	}
	//判斷對象是否可以旋轉
	public boolean canRotate(int x,int y) {
		int x2=getPointX(1);
		int y2=getPointY(1);
		int x1=getPointX(0);
		int y1=getPointY(0);
		if ((x>x2-6) && (y>y2-6) && (x<x2+6) && (y<y2+6))
			return true;
		else if((x>x1-6) && (y>y1-6) && (x<x1+6) && (y<y1+6))
			return true;
		else if((x>x2-6) && (y>y1-6) && (x<x2+6) && (y<y1+6))
			return true;
		else if((x>x1-6) && (y>y2-6) && (x<x1+6) && (y<y2+6))
			return true;
		else
			return false;
	}
	//判斷對象是否可以改變大小
	public boolean canResizeObject(int x,int y) {
		int buff=(int)(stroke/2);
		//int x2=getMaxX()+buff;
		//int y2=getMaxY()+buff;
		int x2=getPointX(1);
		int y2=getPointY(1);
		if ((x>x2-4) && (y>y2-4) && (x<x2+4) && (y<y2+4))
			return true;
		else
			return false;
	}
	
	public void draw(Graphics2D g) {}
	
	public void fill(){}
	
	public void drawLastLine(Graphics2D g) {}
	
	public void addPoint(int x,int y) {}
	
	public void setPoint(int i,int x,int y) {
		X.set(i,x);
		Y.set(i,y);
	}
	
	public int getPointX(int i) {
		return (int)(X.get(i));
	}
	
	public int getPointY(int i) {
		return (int)(Y.get(i));
	}
	
	public int getLength() {
		return X.size();
	}
	
	public int getWidth() {
		return Math.abs(getPointX(0)-getPointX(1));
	}
	
	public int getHeight() {
		return Math.abs(getPointY(0)-getPointY(1));
	}
	
	public int getMinX() {
		return Math.min(getPointX(0),getPointX(1));
	}
	
	public int getMinY() {
		return Math.min(getPointY(0),getPointY(1));
	}
	
	public int getMaxX() {
		return Math.max(getPointX(0),getPointX(1));
	}
	
	public int getMaxY() {
		return Math.max(getPointY(0),getPointY(1));
	}
	
	public String toString() {
		return "未知二維圖形";
	}
	//設置對象的漸變色
	public void setGradientPaint(Point p1,Point p2) {
		try {
			this.p1=p1;
			this.p2=p2;
			ptInterface=new GradientPaint(p1,color,p2,color2);
		} catch (Exception e) {
			System.out.println ("==============================");
			System.out.println ("setGradientPaint(Point,Point)方法中出現異常: ");
	
		}
	}
	//改變對象的大小
	public void changeSize(int x,int y) {
		//判斷二維圖形
		if (isSquare) {
			int w=x-getPointX(0);
			int h=y-getPointY(0);
			int s=Math.min(Math.abs(w),Math.abs(h));
			if (w>0 && h>0)
				addPoint(getPointX(0)+s,getPointY(0)+s);
			else if (w>0 && h<0)
				addPoint(getPointX(0)+s,getPointY(0)-s);
			else if (w<0 && h>0)
				addPoint(getPointX(0)-s,getPointY(0)+s);
			else if (w<0 && h<0)
				addPoint(getPointX(0)-s,getPointY(0)-s);
				
		} else {
			addPoint(x,y);
		}
	}
	public void rotate(){
		
	}
	//移動對象
	public void moveObject(int xBuff,int yBuff) {
		for (int i=getLength()-1; i>=0; i--) {
			setPoint(i,getPointX(i)+xBuff,getPointY(i)+yBuff);
		}
		if (gradientPaint>0) {	//漸變填充處理
			try {
				p1=new Point(p1.x+xBuff,p1.y+yBuff);
				p2=new Point(p2.x+xBuff,p2.y+yBuff);
				setGradientPaint(p1,p2);
			} catch (Exception e) {		//沒有兩個點
				System.out.println ("==============================");
				System.out.println ("moveObject(int,int)方法出現異常:");
				
			}
		}
	}
	//畫對象獲取焦點的8個點
	public void drawMoveFocus(Graphics2D g,Color backColor) {
		AffineTransform af=g.getTransform();
		if(rotateNum!=0)
		{
		    g.translate(getMinX(),getMinY());
		}
		g.rotate(rotateNum);
		int x1=getMinX();
		int y1=getMinY();
		int x2=getMaxX();
		int y2=getMaxY();
		int buff=0;
		if(rotateNum!=0)
		{
			x2=x2-x1;
		    y2=y2-y1;
		    x1=0;y1=0;  
		}
		if (!filled) {
			buff=(int)(stroke/2)+1;
		}
		g.setStroke(new BasicStroke(1.0f));
		g.setXORMode(backColor);
		g.drawRect(x1-6-buff,y1-6-buff,5,5);
		g.drawRect(x1-6-buff,y2+buff,5,5);
		g.drawRect(x2+buff,y1-6-buff,5,5);
		g.drawRect(x2+buff,y2+buff,5,5);
		
		g.drawRect((x1+x2)/2-2-buff,y1-6-buff,5,5);
		g.drawRect(x1-6-buff,(y1+y2)/2-2-buff,5,5);
		g.drawRect((x1+x2)/2-2-buff,y2+buff,5,5);
		g.drawRect(x2+buff,(y1+y2)/2-2-buff,5,5);

		if (isChangablePoint(x1,y1))
			g.fillRect(x1-5-buff,y1-5-buff,5,5);
		else if (isChangablePoint(x1,y2))
			g.fillRect(x1-5-buff,y2+buff,5,5);
		else if (isChangablePoint(x2,y1))
			g.fillRect(x2+buff,y1-5-buff,5,5);
		else if (isChangablePoint(x2,y2))
			g.fillRect(x2+buff,y2+buff,5,5);
		
		// 繪制旋轉點 
	/*	g.drawLine((x1+x2)/2-buff,y1-14-buff,(x1+x2)/2-buff,y1-7-buff);
		g.setColor(new Color(0x22,0xB1,0x4C));
		g.fillRect((x1+x2)/2-2-buff,y1-20-buff,6,6);*/
		
		
		g.setXORMode(backColor);
		if(rotateNum!=0)
			g.setTransform(af);
	}
    //畫對象旋轉焦點的4個點
	public void drawRotateFocus(Graphics2D g){
		AffineTransform af=g.getTransform();
		if(rotateNum!=0)
		{
		    g.translate(getMinX(),getMinY());
		}
		g.rotate(rotateNum);
		
		int x1=getMinX();
		int y1=getMinY();
		int x2=getMaxX();
		int y2=getMaxY();
		int buff=0;
		if (!filled) {
			buff=(int)(stroke/2)+1;
		}
		if(rotateNum!=0)
		{
			x2=x2-x1;
		    y2=y2-y1;
		    x1=0;
		    y1=0;	    
		}
		g.setColor(new Color(0x22,0xB1,0x4C));
		g.fillRect(x1-6-buff,y1-6-buff,8,8);
		g.drawRect(x1-6-buff,y2+buff,5,5);
		g.drawRect(x2+buff,y1-6-buff,5,5);
		g.drawRect(x2+buff,y2+buff,5,5);
		
		if(rotateNum!=0)
			g.setTransform(af);
	//	g.fillRect((x1+x2)/2-2-buff,y1-6-buff,5,5);
	//	g.fillRect(x1-6-buff,(y1+y2)/2-2-buff,5,5);
	//	g.fillRect((x1+x2)/2-2-buff,y2+buff,5,5);
	//	g.fillRect(x2+buff,(y1+y2)/2-2-buff,5,5);
	}
	
	protected boolean isChangablePoint(int x,int y) {
		if (x==getPointX(1) && y==getPointY(1))
			return true;
		else
			return false;
	}
	
	public void doDraw(Graphics2D g2d,Shape shape) {
		AffineTransform af=g2d.getTransform();
		Shape temp;
		temp=shape;
		if(rotateNum!=0)
		{
			g2d.translate(getMinX(),getMinY());

			shape=shape2;	    
		}
		g2d.rotate(rotateNum);
		if (filled) {
			if (gradientPaint>0) {
				g2d.setTransform(new AffineTransform());
				g2d.setPaint(ptInterface);
			} else {
				g2d.setPaint(color);
			}
			//g2d.translate(this.getWidth() / 2, this.getHeight() / 2);
			//g2d.rotate(0);
			g2d.fill(shape);
		} else {
			g2d.setPaint(color);
			g2d.setStroke(new BasicStroke(stroke));
			g2d.draw(shape);
		}
		if(rotateNum!=0)
		{
			g2d.setTransform(af);
			shape=temp;
		}
	}
	public Object clone() throws CloneNotSupportedException { 
		BaseObject bo = (BaseObject)super.clone();
		//sheep = (Sheep)fold.sheep.clone();
		X=(LinkedList<Integer>) bo.X.clone();
		Y=(LinkedList<Integer>) bo.Y.clone();
		return bo;
    }
}









//星星類
class ObjPolygon extends BaseObject {
	private int x1,y1,x2,y2;
	private int xBase,yBase;
	private int radians;
	private int[] size={0,0};
	private double increase;
	public ObjPolygon() {
		this(5);
	}
	public ObjPolygon(int rad) {
		super();
		radians=rad;
		increase=Math.toRadians(360.0/(rad*2));
		for (int i=0; i<radians*2; i++) {
			X.add(0);
			Y.add(0);
		}
		type=BaseObject.POLYGON;
	}
	public String toString() {
		return "星星 "+String.valueOf(getLength()/2)+" 個角";
	}
	public void addPoint(int x,int y) {
		xBase=x;
		yBase=y;
	}
	public void moveObject(int xBuff,int yBuff) {
		super.moveObject(xBuff,yBuff);
		xBase+=xBuff;
		yBase+=yBuff;
	}
	public void draw(Graphics2D g2d) {
		int len=getLength();
		int[] x=new int[len];
		int[] y=new int[len];
		for (int i=0; i<len; i++) {
			x[i]=(Integer)(X.get(i));
			y[i]=(Integer)(Y.get(i));
		}
//		g2d.drawPolyline(x,y,len);
		shape=new Polygon(x,y,len);
		/* */

		doDraw(g2d,shape);
		getXYs();
	}
	public void changeSize(int x,int y) {
		size[1]=Math.max(Math.abs(x-xBase),Math.abs(y-yBase));
		size[0]=size[1]/2;
		double rad=0.0;
		for (int i=0; i<radians*2; i++) {
			X.set(i,(int)(size[i%2]*Math.cos(rad))+xBase);
			Y.set(i,(int)(size[i%2]*Math.sin(rad))+yBase);
			rad+=increase;
		}
		getXYs();
		if (gradientPaint>0) {
			setGradientPaint(new Point(getMinX(),getMinY()),new Point(getMaxX(),getMaxY()));
		}
	}
	public int getMinX() {
		return x1;
	}
	public int getMinY() {
		return y1;
	}
	public int getMaxX() {
		return x2;
	}
	public int getMaxY() {
		return y2;
	}
	public boolean canResizeObject(int x,int y) {
		int x2=getMaxX();
		int y2=getMaxY();
		if ((x>x2-4) && (y>y2-4) && (x<x2+4) && (y<y2+4))
			return true;
		else
			return false;
	}
	private void getXYs() {
		x1=getPointX(0);
		y1=getPointY(0);
		x2=x1;
		y2=y1;
		for (int i=0; i<getLength(); i++) {
			int xx=getPointX(i);
			int yy=getPointY(i);
			if (xx<x1)
				x1=xx;
			if (yy<y1)
				y1=yy;
			if (xx>x2)
				x2=xx;
			if (yy>y2)
				y2=yy;
		}
	}
	protected boolean isChangablePoint(int x,int y) {
		if (x==getMaxX() && y==getMaxY())
			return true;
		else
			return false;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久伊人精品| 国产精品五月天| 26uuu成人网一区二区三区| 欧美在线高清视频| 99re在线视频这里只有精品| 亚洲人成网站精品片在线观看| 日韩三级伦理片妻子的秘密按摩| 美美哒免费高清在线观看视频一区二区| 欧美亚洲丝袜传媒另类| 白白色 亚洲乱淫| 欧美最新大片在线看| 亚洲视频一区二区在线观看| 一区二区三区在线免费播放| 国产一区二区三区在线观看精品| 91精品国产91久久综合桃花| 一区二区免费在线播放| 日韩欧美在线影院| 国产夫妻精品视频| 亚洲视频你懂的| 欧美日韩在线观看一区二区| 欧美一区二区在线视频| 久久女同精品一区二区| 久久av老司机精品网站导航| 色呦呦一区二区三区| 国产精品久久看| 久久91精品久久久久久秒播| 色综合天天综合网天天看片| 国产精品久久久久久妇女6080| 国产女同互慰高潮91漫画| 欧美一级一区二区| 亚洲欧美成aⅴ人在线观看| 欧美日韩和欧美的一区二区| 欧美视频三区在线播放| 欧美色图片你懂的| 国产精品九色蝌蚪自拍| 美女高潮久久久| 欧美日韩综合一区| 国产视频一区在线观看| 激情都市一区二区| 欧美精品少妇一区二区三区| 精品久久国产97色综合| 五月综合激情网| 五月综合激情婷婷六月色窝| 国产福利一区在线| 日韩欧美黄色影院| 国产精品一品二品| 中文字幕av在线一区二区三区| 日韩无一区二区| 色呦呦一区二区三区| 国产盗摄一区二区| 毛片一区二区三区| 亚洲综合在线电影| 亚洲国产欧美另类丝袜| 亚洲线精品一区二区三区| 亚洲综合久久久久| 中文字幕在线观看一区二区| av一区二区三区四区| 精品国产自在久精品国产| 国产伦精品一区二区三区视频青涩| 欧美tickling挠脚心丨vk| 麻豆精品一二三| 一区二区高清视频在线观看| 欧美日韩精品欧美日韩精品一| 99精品欧美一区二区蜜桃免费| 久久九九国产精品| 色欧美日韩亚洲| 亚洲男同性恋视频| 五月天激情综合网| 91精品国产免费| 韩国在线一区二区| 伊人一区二区三区| 国产欧美精品一区二区色综合朱莉 | 国产精品美女久久久久aⅴ国产馆| 国产日韩一级二级三级| 国产电影精品久久禁18| 美腿丝袜在线亚洲一区| 粉嫩一区二区三区性色av| 欧美日韩三级一区| 亚洲v日本v欧美v久久精品| 69久久夜色精品国产69蝌蚪网| 日韩国产欧美在线观看| 综合久久久久久| 日韩成人一级大片| 欧美精品aⅴ在线视频| 欧美国产精品久久| 不卡电影免费在线播放一区| 欧美一区二区三区免费在线看| 日韩毛片精品高清免费| 欧美乱妇23p| 色哟哟一区二区| 北岛玲一区二区三区四区| 亚洲第一激情av| 洋洋av久久久久久久一区| 久久久久久久av麻豆果冻| 亚洲桃色在线一区| 久久一区二区视频| 欧美一区二区日韩一区二区| 在线播放/欧美激情| 国内不卡的二区三区中文字幕| 麻豆一区二区三区| 国产一区在线精品| 成人免费视频播放| 色系网站成人免费| 91精品中文字幕一区二区三区| 亚洲精品一区在线观看| 亚洲国产精华液网站w| 专区另类欧美日韩| 日韩精彩视频在线观看| 久久69国产一区二区蜜臀| 丁香婷婷深情五月亚洲| 在线一区二区观看| 日韩精品一区二区三区视频| 欧美激情资源网| 亚洲综合激情网| 蜜臀久久99精品久久久久宅男| 国产激情一区二区三区桃花岛亚洲| 96av麻豆蜜桃一区二区| 欧美精品日韩综合在线| 久久色成人在线| 夜夜操天天操亚洲| 国产美女精品人人做人人爽| 91女厕偷拍女厕偷拍高清| 欧美久久久久久久久| 中文字幕 久热精品 视频在线| 天堂在线亚洲视频| 成人中文字幕在线| 91精品国产色综合久久不卡蜜臀| 亚洲国产精品激情在线观看| 婷婷综合在线观看| 91女人视频在线观看| 亚洲精品在线观看网站| 国产精品国产成人国产三级| 一区二区三区波多野结衣在线观看| 无吗不卡中文字幕| 国产高清不卡一区| 欧美亚洲一区二区在线| 精品精品国产高清a毛片牛牛 | 色哟哟一区二区在线观看| 欧美日韩国产小视频| 久久久美女艺术照精彩视频福利播放| 国产精品午夜春色av| 日韩国产欧美在线播放| 99精品欧美一区二区三区小说| 欧美va亚洲va| 五月激情综合色| 色综合中文综合网| 色一情一伦一子一伦一区| 精品毛片乱码1区2区3区| 亚洲在线免费播放| 99久久国产免费看| 久久久精品欧美丰满| 蜜乳av一区二区| 91麻豆精品国产91| 亚洲福中文字幕伊人影院| 99国内精品久久| 欧美激情在线免费观看| 国产精品99久久久久久久女警 | 一区二区三区免费观看| av电影天堂一区二区在线| 国产亚洲自拍一区| 黄色精品一二区| 亚洲精品一区在线观看| 精品一区二区三区久久久| 日韩一区二区三区免费观看| 喷水一区二区三区| 欧美一区二区三区在线看| 日日摸夜夜添夜夜添亚洲女人| 欧美日韩一区二区三区不卡| 亚洲午夜视频在线观看| 在线亚洲高清视频| 亚洲一区二区三区不卡国产欧美| 一本色道久久综合精品竹菊| 一区二区三区国产| 欧美日韩一区二区三区在线| 亚洲aaa精品| 欧美一区二区网站| 麻豆一区二区三| 久久午夜老司机| www.亚洲国产| 亚洲福利一区二区| 日韩欧美二区三区| 国产一区二区三区免费看 | 日韩欧美一区中文| 精品一区二区久久久| 国产日韩视频一区二区三区| av电影一区二区| 亚洲福利国产精品| 欧美一级久久久久久久大片| 久久99九九99精品| 国产精品久久久久久久久久久免费看| 99re视频这里只有精品| 亚洲高清免费观看高清完整版在线观看| 欧美放荡的少妇| 国产一区二区视频在线| 亚洲欧美在线另类| 在线观看91av| 国产精品亚洲一区二区三区妖精| 中文字幕在线观看不卡视频| 欧美午夜理伦三级在线观看| 国产主播一区二区三区|