【问题标题】:Copy polygon to new location将多边形复制到新位置
【发布时间】:2009-10-06 19:38:27
【问题描述】:

如何将多边形复制到新位置。我使用e.isPopupTrigger() 选择多边形,但我不知道如何复制它。复制的功能和翻译的功能类似吗? 例如多边形.translate(x,y)?

谢谢。

编辑:

//此代码不起作用:-(

if(e.getSource() == Copy){  
  Polygon copyPolygon = new Polygon();
  copyPolygon = selectedTriangle;
  copyPolygon.translate(2, 2);
  repaint();
}

问题已经用这些代码解决了:-)

if(e.getSource() == Copy){    
  Polygon copyPolygon = new Polygon(selectedTriangle.xpoints,selectedTriangle.ypoints,selectedTriangle.npoints);
  copyPolygon.translate(10,10);
  triangles.add(copyPolygon);
  repaint();
}           

【问题讨论】:

    标签: java copy polygon


    【解决方案1】:

    您可以从旧多边形构造一个新多边形,然后将该多边形移动到新位置

    Polygon newPolygon = new Polygon(oldPolygon.xpoints, oldPolygon.ypoints, oldPolygon.npoints);
    newPolygon.translate(newXPos, newYPos);
    

    您的代码不起作用,因为该行

    copyPolygon = selectedTriangle;
    

    不复制 selectedTriangle,它只是让 copyPolygon 指向同一个对象。因此,您需要构建一个与原始多边形相同的新多边形,这就是我建议的第一行所做的。

    【讨论】:

    • 还有 '= new Polygon();'给定下一行是多余的。在克隆原始多边形之前无需创建新多边形。
    • 我试图更改代码,但我不断收到此错误:类型对象中的方法 clone() 不可见。
    • 啊,我的错,Polygon 实际上是不可克隆的。它会给你这个错误,因为克隆是对象的受保护成员,并且不会被 Polygon 中的某些函数覆盖。在这种情况下,请遵循我的第一个建议,它应该创建一个与旧多边形具有相同点的新多边形。
    • 我还是没有成功。多边形 copyPolygon = new Polygon(selectedTriangle.xpoints,selectedTriangle.ypoints,selectedTriangle.npoints); copyPolygon.translate(10,10);
    • 您的绘图函数是否在绘制复制的多边形?此代码仅创建一个副本,您仍然必须在绘制函数中绘制它。您可以将复制的多边形添加到一个数组中,然后迭代并在绘制函数中绘制,这样它就可以处理任意数量的额外多边形。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2012-02-24
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    相关资源
    最近更新 更多