`

我的画图板1.0<细说5.另类处理,浅析多边形>

J# 
阅读更多
1.多边形图形
/*
 * 多边形对象
 */
public class PolygonShape extends ShapeObject {
	//保存多边形的点的队列
	QueueList<Integer> Polygon=new QueueList<Integer>();

	public QueueList<Integer> getPolygon(){
		return Polygon;
	}
	
	
	/**
	 * 将数据放入队列的方法
	 * @param num:要放入的点的坐标
	 */
	public void addNum(int pointNum){
		Polygon.add(pointNum);
	}
	
	
}
2.存入数据
		if("polygon".equals(str)){
	    
			if(counter==0){
				//画图形后,创建一个新的多边形对象
				PolygonShape polygon=new PolygonShape();

		    	polygon.setnum(5);
				x1=e.getX();
				y1=e.getY();
				counter++;
				System.out.println("x1:"+x1+"  y1:"+y1);

				//保存到队列的坐标
		    	polygon.addNum(x1);
		    	polygon.addNum(y1);
		    	System.out.println("保存了坐标000>"+polygon.Polygon.getsize());
		    	
			}
			else if(counter==1){
				x2=e.getX();
				y2=e.getY();
				gp.drawLine(x1, y1, x2, y2);
				tempX=x2;
				tempY=y2;
				//保存到队列的坐标
				polygon.addNum(x2);
		    	polygon.addNum(y2);
				counter++;
				System.out.println("保存了坐标111>"+polygon.Polygon.getsize());
			}
			else  if(counter!=0&&counter!=1){
				x2=e.getX();
				y2=e.getY();
				gp.drawLine(x2, y2, tempX, tempY);
				tempX=x2;
				tempY=y2;
				//保存到队列的坐标
				polygon.addNum(x2);
		    	polygon.addNum(y2);
		    	System.out.println("保存了坐标222>"+polygon.Polygon.getsize());
			}

 	    if(i==3&&"polygon".equals(str)){
 	    	counter=0;
 	    	x2=e.getX();
 	    	y2=e.getY();
 	    	
 	    	gp.drawLine(x1, y1, x2, y2);
	    	gp.drawLine(tempX, tempY, x2, y2);

	    	
	    	polygon.addNum(x2);
	    	polygon.addNum(y2);
	    	System.out.println("保存了坐标");
	    	
	    	//添加到队列
	    	shape.add(polygon);
	    	System.out.println("添加到队列中了");
 	    }


3.取出多边形并画图
			if(shapetype==5){
				//创建一个多边形对象
				PolygonShape polygon =(PolygonShape)type;
				//多边形对象得到它所保存坐标的的队列;
				QueueList<Integer> Polygon=polygon.getPolygon();
				int carry[][]=new int[Polygon.getsize()/2][2];
				int l=0;
				for(int j=0;j<Polygon.getsize();j++){
					System.out.println(Polygon.getnum(j));
				}
				for(int j=0;j<Polygon.getsize()/2;j++){
					for(int k=0;k<2;k++){
						carry[j][k]=Polygon.getnum(l);
						l++;
					}
				}
				for(int j=1;j<carry.length;j++){			
					gp.drawLine(carry[j-1][0],carry[j-1][1],carry[j][0],carry[j][1]);
					if(j==carry.length-1){
				    gp.drawLine(carry[0][0],carry[0][1],carry[j][0],carry[j][1]);	
					}
}


多边形主要程序如上
这里的多边形主要是用了自定义链表
思路:
1.在画多边形的第一笔就创建一个多边形对象,然后添加坐标点。
这点很重要,读者可以自己体会,当初我在这里犯错误是还没有画图形就创建一个多边形对象,结果,我的程序变成了画一条线就创建一个多边形对象,结果始终无法保存数据,逻辑问题
2.将多边形多个点保存到“小盒子”中,然后放到图形“盒子”中。然后调用的时候遍历所有的点。

3.第2点有一个重要的拓展,即将这个小盒子看成所有图形的保存器,再在之前加上一个图形标签,这样很节约代码的空间。以后升级这个画图板可以沿着这个思路。
分享到:
评论

相关推荐

    我的画图板1.0<细说1.准备工作,自定义队列>

    自定义队列的检测 博文链接:https://zhangchong2011.iteye.com/blog/907676

    java JDK5.0 实例开发宝典

    Jdk5.0 源代码使用说明&lt;br&gt;&lt;br&gt;1. 类型基本操作&lt;br&gt;2. 面向对象的操作 适配器模式 单列模式 工程模式 组合模式。。。&lt;br&gt;3. 精确计算数字和随机数字&lt;br&gt;4. java.util.package高级使用 List Set collection..&lt;br&gt;5. ...

    JAVA简单画板程序设计实验报告材料.doc

    } if&lt;e.getSource&lt;&gt;.equals&lt;btn5&gt;&gt; { a='4'; } if&lt;e.getSource&lt;&gt;.equals&lt;btn6&gt;&gt; { a='5'; } } 定义一个变量a,对按键监听进展响应,例如当监听到btn1时赋值a='1'〔a为char型 〕,即当前工具为直线.但是当监听到btn4时...

    我的画图板1.0

    可以重绘的画图板 博文链接:https://zhangchong2011.iteye.com/blog/907598

    VB编程资源大全(源码 其它3)

    556,delay1.zip &lt;br&gt;源码设计中的延时功能(1KB)&lt;br&gt;557,type_1.zip &lt;br&gt;趣味打字2.1(233KB)&lt;br&gt;558,test1.zip &lt;br&gt;asp编写动态网页计数器(1KB)&lt;br&gt;559,hztosm.zip &lt;br&gt;汉字转声母完全源代码(90KB)&lt;br&gt;560,...

    Visual C++ 编程资源大全(英文源码 图形)

    Line Class&lt;br&gt;一个简单的虚线类(4KB)&lt;END&gt;&lt;br&gt;47,47.zip&lt;br&gt;Drawing Dashed Lines and Curves&lt;br&gt;画虚的直线和曲线(9KB)&lt;END&gt;&lt;br&gt;48,48.zip&lt;br&gt;Drawing dotted lines&lt;br&gt;画边界线(5KB)&lt;END&gt;&lt;br&gt;49,49.zip&lt;br&gt;How to...

    VB编程资源大全(源码 其它1)

    556,delay1.zip &lt;br&gt;源码设计中的延时功能(1KB)&lt;br&gt;557,type_1.zip &lt;br&gt;趣味打字2.1(233KB)&lt;br&gt;558,test1.zip &lt;br&gt;asp编写动态网页计数器(1KB)&lt;br&gt;559,hztosm.zip &lt;br&gt;汉字转声母完全源代码(90KB)&lt;br&gt;560,...

    VB编程资源大全(源码 其它2)

    556,delay1.zip &lt;br&gt;源码设计中的延时功能(1KB)&lt;br&gt;557,type_1.zip &lt;br&gt;趣味打字2.1(233KB)&lt;br&gt;558,test1.zip &lt;br&gt;asp编写动态网页计数器(1KB)&lt;br&gt;559,hztosm.zip &lt;br&gt;汉字转声母完全源代码(90KB)&lt;br&gt;560,...

    VB编程资源大全(源码 其它4)

    556,delay1.zip &lt;br&gt;源码设计中的延时功能(1KB)&lt;br&gt;557,type_1.zip &lt;br&gt;趣味打字2.1(233KB)&lt;br&gt;558,test1.zip &lt;br&gt;asp编写动态网页计数器(1KB)&lt;br&gt;559,hztosm.zip &lt;br&gt;汉字转声母完全源代码(90KB)&lt;br&gt;560,...

    Visual C++ 编程资源大全(源码 图形)

    DIBShow.zip&lt;br&gt;设备无关位图的一个里例子&lt;1830kb&gt;&lt;END&gt;&lt;br&gt;26,Clock.zip&lt;br&gt;一个数字时钟的图形的工程&lt;1450kb&gt;&lt;END&gt;&lt;br&gt;27,PAINTOBJ.zip&lt;br&gt;一个类似于画图的小程序&lt;1450kb&gt;&lt;END&gt;&lt;br&gt;28,detect.zip&lt;br&gt;用差影法检测...

    易语言模块大全(共775个模块)

    窗口外形任我设(1.0).zip 窗口热键(1.0).zip 窗口贴边隐藏(1.0).zip 窗口透明模块(1.0).zip 超文本浏览框功能扩展模块(1.2).zip 超级信息框(1.0).zip 超级列表框补助模块(1.0).zip 超级列表框列宽尺寸自动调整(1.0)....

    易语言700模块打包

    窗口外形任我设(1.0).zip 窗口热键(1.0).zip 窗口贴边隐藏(1.0).zip 窗口透明模块(1.0).zip 超文本浏览框功能扩展模块(1.2).zip 超级信息框(1.0).zip 超级列表框补助模块(1.0).zip 超级列表框列宽尺寸自动...

    画图板彩色个人简历表格.doc

    画图板彩色个人简历表格.doc

    画图板 代码 画图板 代码 画图板 代码

    画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码...

    C#窗体上画图 来源于<<C#范例宝典>>,

    C#窗体上画图 ,来源于&lt;&lt;C#范例宝典&gt;&gt;,文件太大,就选几个有用的

    MATLAB GUI实现动态画图曲线的源程序代码.rar

    MATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源...

    EasyEasyToolSAI1.05简体中文版

    &lt;blotmap&gt; ... 存放渗透形状材质的文件夹 &lt;brushtex&gt; ... 存放画纸质感的文件夹 &lt;elemap&gt; ... 存放笔刷形状的文件夹 &lt;toolink&gt; ... 存放钢笔类工具信息的文件夹 &lt;toolnrm&gt; ... 存放普通笔刷工具信息的文件夹

    LambdaProbe 中文包下载

    &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;System monitoring 系统监控 &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Memory monitoring 内存监控 &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Cluster information 集群信息 &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Log file tailing 实时追踪log文件 &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br...

    gsDXFWriter.dll控件

    &lt;br&gt; gsDXFWriter.dll控件 是一个基于 ActiveX DLL的,可导出 Autodesk DXF 画图文件的控件。&lt;br&gt;&lt;br&gt; gsDXFWriter.dll控件的示意图如下: &lt;br&gt;&lt;br&gt; &lt;img src=DownloadFilesimage_activeximagesgsdxfwriter_dll.gif&gt;...

Global site tag (gtag.js) - Google Analytics