我在畫布上繪製了一些多邊形,並且想要在繪製的多邊形上繪製一些線條。如果在繪製線條後繪製,繪製的多邊形會覆蓋線條,但是如果我先繪製線條完全消失。代碼在Scala中,但我認爲所有相關代碼都來自Java庫。java:如何在畫布上繪製線條
編輯我已經擴大了在響應代碼雷克斯·科爾的評論
package rStrat
package rSw
package mapCanv
import swing._
import java.awt.geom._
import java.awt.Polygon
abstract class MapCanv [T <: TypesD](val mArea: GeomBase[T]#MapArea) extends Panel
{
type VHexT <: VisHex
val vHexs: Vec[VisHex] = mArea.mHexs.map(i => newVHexT(i))
def newVHexT(mHex: GeomBase[T]#MapArea#MapHex): VHexT
val line: Line2D.Double = new Line2D.Double(0,0, 350, 350)
override def paintComponent (gr2d: Graphics2D)
{
super.paintComponent (gr2d)
vHexs.foreach(i => i.paint(gr2d))
gr2d.draw(line)
}
abstract class VisHex (val mHex: GeomBase[T]#MapArea#MapHex) extends Polygon with PaintTr
{
mHex.verts.foreach(i => addPoint(i.x.toInt, i.y.toInt))
}
trait PaintTr
{
def paint(gr2d: Graphics2D): Unit
}
}
package rStrat //separate file
package rSw
package mapCanv
import swing._
//import java.awt._
abstract class MapCanvStd[T <: TypesStd](mArea: GeomBase[T]#MapArea) extends MapCanv[T](mArea)
{
type VHexT = VisHexStd
override def newVHexT(mHex: GeomBase[T]#MapArea#MapHex) = new VisHexStd(mHex)
class VisHexStd(mHex: GeomBase[T]#MapArea#MapHex) extends VisHex(mHex)
{
override def paint(gr2d: Graphics2D): Unit =
{
gr2d.setPaint(terrToCol(mHex.hex.terr))
gr2d.fill(this)
}
}
}
這不是工作代碼。我有成千上萬行代碼,首先繪製一個形狀,然後畫出一條線,然後就像你期望的那樣工作,所以你的代碼幾乎肯定會出錯。沒有一個工作的例子,我們不知道在哪裏。例如,您可以將顏色alpha設置爲零,或者您不能調用您認爲自己的繪畫方法,或者調用任何數量的其他東西。 –
@RexKerr我已經做了一個更簡單的繪畫和繪製,行爲就像你描述的那樣。 –