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”的应用程序时,正在为其基础...
Jdk5.0 源代码使用说明<br><br>1. 类型基本操作<br>2. 面向对象的操作 适配器模式 单列模式 工程模式 组合模式。。。<br>3. 精确计算数字和随机数字<br>4. java.util.package高级使用 List Set collection..<br>5. ...
"我的画图板1.0" 是一个简单的图形绘制应用程序,允许用户在屏幕上进行自由绘画并重新编辑他们的作品。这个程序作为一个工具,旨在提供基本的绘图功能,适合初学者或者那些想要快速进行简单图形创作的用户。源码的...
556,delay1.zip <br>源码设计中的延时功能(1KB)<br>557,type_1.zip <br>趣味打字2.1(233KB)<br>558,test1.zip <br>asp编写动态网页计数器(1KB)<br>559,hztosm.zip <br>汉字转声母完全源代码(90KB)<br>560,...
Line Class<br>一个简单的虚线类(4KB)<END><br>47,47.zip<br>Drawing Dashed Lines and Curves<br>画虚的直线和曲线(9KB)<END><br>48,48.zip<br>Drawing dotted lines<br>画边界线(5KB)<END><br>49,49.zip<br>How to...
556,delay1.zip <br>源码设计中的延时功能(1KB)<br>557,type_1.zip <br>趣味打字2.1(233KB)<br>558,test1.zip <br>asp编写动态网页计数器(1KB)<br>559,hztosm.zip <br>汉字转声母完全源代码(90KB)<br>560,...
556,delay1.zip <br>源码设计中的延时功能(1KB)<br>557,type_1.zip <br>趣味打字2.1(233KB)<br>558,test1.zip <br>asp编写动态网页计数器(1KB)<br>559,hztosm.zip <br>汉字转声母完全源代码(90KB)<br>560,...
556,delay1.zip <br>源码设计中的延时功能(1KB)<br>557,type_1.zip <br>趣味打字2.1(233KB)<br>558,test1.zip <br>asp编写动态网页计数器(1KB)<br>559,hztosm.zip <br>汉字转声母完全源代码(90KB)<br>560,...
DIBShow.zip<br>设备无关位图的一个里例子<1830kb><END><br>26,Clock.zip<br>一个数字时钟的图形的工程<1450kb><END><br>27,PAINTOBJ.zip<br>一个类似于画图的小程序<1450kb><END><br>28,detect.zip<br>用差影法检测...
窗口外形任我设(1.0).zip 窗口热键(1.0).zip 窗口贴边隐藏(1.0).zip 窗口透明模块(1.0).zip 超文本浏览框功能扩展模块(1.2).zip 超级信息框(1.0).zip 超级列表框补助模块(1.0).zip 超级列表框列宽尺寸自动调整(1.0)....
窗口外形任我设(1.0).zip 窗口热键(1.0).zip 窗口贴边隐藏(1.0).zip 窗口透明模块(1.0).zip 超文本浏览框功能扩展模块(1.2).zip 超级信息框(1.0).zip 超级列表框补助模块(1.0).zip 超级列表框列宽尺寸自动...
<title>Canvas 画图板</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <canvas id="drawCanvas"></canvas> <script src="js/draw.js"></script> </body> </html> ``` 这里的 `canvas` ...
这款微处理器以其丰富的外设接口和强大的处理能力,能够满足画图板复杂功能的实现需求。硬件部分由最小系统板、TFT-LCD液晶屏以及按键等组成。这些组件共同构成了画图板的基础架构。 在软件方面,开发团队主要工作...
<blotmap> ... 存放渗透形状材质的文件夹 <brushtex> ... 存放画纸质感的文件夹 <elemap> ... 存放笔刷形状的文件夹 <toolink> ... 存放钢笔类工具信息的文件夹 <toolnrm> ... 存放普通笔刷工具信息的文件夹
MATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源程序代码.rarMATLAB GUI实现动态画图曲线的源...
【画画板工具画图工具v1.0绿色免费版】是一款专为用户设计的图形图像处理软件,类似于操作系统自带的画图程序,但它在功能上有所增强,为用户提供更为丰富的绘画体验。这款软件的主要特点包括功能强大且操作简便,...
画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码...
彩虹画图板软件vb代码例题
<br> gsDXFWriter.dll控件 是一个基于 ActiveX DLL的,可导出 Autodesk DXF 画图文件的控件。<br><br> gsDXFWriter.dll控件的示意图如下: <br><br> <img src=DownloadFilesimage_activeximagesgsdxfwriter_dll.gif>...