`

我的画图板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.准备工作,自定义队列>

    标题中的“我的画图板1.0&lt;细说1.准备工作,自定义队列&gt;”表明这是一个关于软件开发的项目,特别提到了“准备工作”和“自定义队列”。这通常意味着开发者在创建一个名为“我的画图板1.0”的应用程序时,正在为其基础...

    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. ...

    我的画图板1.0

    "我的画图板1.0" 是一个简单的图形绘制应用程序,允许用户在屏幕上进行自由绘画并重新编辑他们的作品。这个程序作为一个工具,旨在提供基本的绘图功能,适合初学者或者那些想要快速进行简单图形创作的用户。源码的...

    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 超级列表框列宽尺寸自动...

    canvas 画图板.zip

    &lt;title&gt;Canvas 画图板&lt;/title&gt; &lt;link rel="stylesheet" href="css/style.css"&gt; &lt;/head&gt; &lt;body&gt; &lt;canvas id="drawCanvas"&gt;&lt;/canvas&gt; &lt;script src="js/draw.js"&gt;&lt;/script&gt; &lt;/body&gt; &lt;/html&gt; ``` 这里的 `canvas` ...

    (2021-2022年)专题资料完美版基于触摸屏的画图板的设计与实现.ppt

    这款微处理器以其丰富的外设接口和强大的处理能力,能够满足画图板复杂功能的实现需求。硬件部分由最小系统板、TFT-LCD液晶屏以及按键等组成。这些组件共同构成了画图板的基础架构。 在软件方面,开发团队主要工作...

    EasyEasyToolSAI1.05简体中文版

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

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

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

    画画板工具画图工具v1.0绿色免费版

    【画画板工具画图工具v1.0绿色免费版】是一款专为用户设计的图形图像处理软件,类似于操作系统自带的画图程序,但它在功能上有所增强,为用户提供更为丰富的绘画体验。这款软件的主要特点包括功能强大且操作简便,...

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

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

    彩虹画图板软件vb代码例题.txt

    彩虹画图板软件vb代码例题

    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