本人遇到一个难题。在看简单的一个图形操作系统 源代码时,删除直线的算法就是看不懂!希望那位好心人啊!帮我哈嘛。删除直线的操作就是单击“删除”——“直线”,然后鼠标单击要删除的直线中央附近,系统将删除这条直线。
//*下面就是删除直线的方法*/
public void deleteline(int x,int y//x.y分别是鼠标在删除直线时候获得的鼠标位置
{
double length=100000;
cshape temp=this.head;//cshape是所有图形的父类(内容是所有图形 的共同属性 color,int type(图形类型)还有一个就是cshape的一个对象next主要是为了表示下一个图形)。
head 为所有图形的头接点
cshape delt=null;
while(temp!=null)
{
if(temp.type!=1){temp=temp.next;contine;}
cline cp=(cline)temp;//cline为直线
int xx=(cp.sx+cp.ey)/2;//sx和 sy,ex和ey分别是直线构造函数的参数都用来修改图形类型的它们,的方法是resetsx(int sx),resetsy(int sy),resetex(int ex)和resetey(int ey)
主要是为了在改变图形的时候用的。
int yy=(cp.sy+cp.ey)/2;
double len=Math.sqrt((xx-x)*(xx-x)+(yy-y)(yy-y));
if(length>len)
{
length=len;
delt=temp;
}
temp=temp.next;
}
if(delt==null)reture;
temp=this.head;
if(temp.equals(delt)) this.head=this.head.next;
else{
while(temp!=null&&temp.next!&&(!temp.next.equals(delt)))
{
temp=temp.next;
}
temp.next=delt.next;}
}
}
//*下面就是删除直线的方法*/
public void deleteline(int x,int y//x.y分别是鼠标在删除直线时候获得的鼠标位置
{
double length=100000;
cshape temp=this.head;//cshape是所有图形的父类(内容是所有图形 的共同属性 color,int type(图形类型)还有一个就是cshape的一个对象next主要是为了表示下一个图形)。
head 为所有图形的头接点
cshape delt=null;
while(temp!=null)
{
if(temp.type!=1){temp=temp.next;contine;}
cline cp=(cline)temp;//cline为直线
int xx=(cp.sx+cp.ey)/2;//sx和 sy,ex和ey分别是直线构造函数的参数都用来修改图形类型的它们,的方法是resetsx(int sx),resetsy(int sy),resetex(int ex)和resetey(int ey)
主要是为了在改变图形的时候用的。
int yy=(cp.sy+cp.ey)/2;
double len=Math.sqrt((xx-x)*(xx-x)+(yy-y)(yy-y));
if(length>len)
{
length=len;
delt=temp;
}
temp=temp.next;
}
if(delt==null)reture;
temp=this.head;
if(temp.equals(delt)) this.head=this.head.next;
else{
while(temp!=null&&temp.next!&&(!temp.next.equals(delt)))
{
temp=temp.next;
}
temp.next=delt.next;}
}
}
解决方案 »
- 我new了个对象然后 我把值也设到到对象里面去了 添加到list 里面去 然后list遍历出来 我怎么把遍历出来的 那个对象的属性的值取出来 呢?
- 请人解释一下二进制表示A的时候是01000000而如果用byte表示一个整数65时也是01000000,那计算机是怎么区分的啊
- 根据ip获取mac地址效率问题
- 一个关于静态函数调用,提高效率的小问题。请指教!
- 选择题
- 麻烦推存JAVA书籍
- java 中读取本地xml正常。但远程就变成乱码。(同一个文件,是繁体的)
- 小弟我在学习过程中,从来没有见到过这样奇怪的问题,我真的想不通了
- 请教一个问题,帮我解决下,好吗?
- 请帮我想一个开发的题目
- 关于表格事件的几个问题
- 有关包的错误
第一次循环,找到距离鼠标点最近的直线
第二次循环,找到应该被删除的直线的上一个图形,然后让他的next变成应该被删除直线的next。直线自然从图形列表中被删除了。