Я рисую несколько полигонов на холсте и хочу нарисовать несколько линий над окрашенными полигонами. Если я рисую после рисования линии, окрашенные полигоны покрывают линию, но если я рисую сначала, линия полностью исчезает. Код находится в Scala, но я думаю, что все соответствующие коды из Java-библиотек.java: как рисовать линии над картиной холста
Редактировать Я расширил код в ответ на комментарий Rex Керра
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)
}
}
}
Это не рабочий код. У меня есть тысячи строк кода, в которых я сначала рисую фигуру, а затем рисую над ней линию, и это работает так, как вы ожидали, поэтому в вашем коде почти что-то не так. Без рабочего примера мы не можем сказать, где. Например, вы можете настроить цветной альфа на ноль, иначе вы не могли бы назвать метод рисования, который, по вашему мнению, вы или любое другое. –
@RexKerr Я сделал более простую краску и рисую, и поведение, как вы описали. –