Ekrana bir 2D piksel dizisi yazmak için ne önerirsiniz?Scala - Bir 2D diziyi ekrana yazmak için en kolay 2D grafikler mi?
İlk düşüncem bazı SWT bağlayıcı, ama başka var mı? Belki işleniyor?
Ekrana bir 2D piksel dizisi yazmak için ne önerirsiniz?Scala - Bir 2D diziyi ekrana yazmak için en kolay 2D grafikler mi?
İlk düşüncem bazı SWT bağlayıcı, ama başka var mı? Belki işleniyor?
O Swing zor değil - kesip aşağıya yapıştırın. Renkleri istemiyorsanız veya herhangi bir boyut penceresine çizme veya her zaman aynı boyutta olmanız durumunda biraz basitleştirebilirsiniz.
:import swing.{Panel, MainFrame, SimpleSwingApplication}
import java.awt.{Color, Graphics2D, Dimension}
object Draw extends SimpleSwingApplication {
val data = // put data here
def top = new MainFrame {
contents = new DataPanel(data) {
preferredSize = new Dimension(300, 300)
}
}
}
Kişisel veriler, verecekti
val data = Array.ofDim[Color](25, 25)
// plot some points
data(0)(0) = Color.BLACK
data(4)(4) = Color.RED
data(0)(4) = Color.GREEN
data(4)(0) = Color.BLUE
// draw a circle
import math._
{
for {
t <- Range.Double(0, 2 * Pi, Pi/60)
x = 12.5 + 10 * cos(t)
y = 12.5 + 10 * sin(t)
c = new Color(0.5f, 0f, (t/2/Pi).toFloat)
} data(x.toInt)(y.toInt) = c
}
gibi bir şey olabilir:
class DataPanel(data: Array[Array[Color]]) extends Panel {
override def paintComponent(g: Graphics2D) {
val dx = g.getClipBounds.width.toFloat/data.length
val dy = g.getClipBounds.height.toFloat/data.map(_.length).max
for {
x <- 0 until data.length
y <- 0 until data(x).length
x1 = (x * dx).toInt
y1 = (y * dy).toInt
x2 = ((x + 1) * dx).toInt
y2 = ((y + 1) * dy).toInt
} {
data(x)(y) match {
case c: Color => g.setColor(c)
case _ => g.setColor(Color.WHITE)
}
g.fillRect(x1, y1, x2 - x1, y2 - y1)
}
}
}
Sonra Salıncak uygulamasını yapmak:
bir panel sınıfını tanımlamak
Mevcut dizinizdeki renklere eşlemek için map
işlevini kolayca kullanabilirsiniz.
Teşekkürler. Kodu da gözden geçirin. –
Performans açısından kritik olan her şey için kavrayışlardan kaçınmanız gerektiğini unutmayın. Optimize edilmezler. – hishadow
Ben işleme bir Scala "bağlantı noktası" olduğunu @ n8han's SPDE, önermek için gidiyorum.
http://technically.us/spde/About
burada örnek bir ton vardır:
Dizide piksel kodlanmış nasıl? Mevcut bir GUI'ye ekleyebileceğiniz veya sadece görüntüyü ekrana ekleyebileceğiniz bir salınım bileşenine mi ihtiyacınız var? – paradigmatic