Я пишу приложение DARTS и внедрил DartBoard, который окрашен в качестве буфере-рим. из BufferedImage и вычислить «сегмент», в котором он находится. Я обертываю это в DartboardSegment, который в основном представляет собой просто набор точек с небольшим количеством дополнительной структуры (какое число на плате он соответствует и т. Д.). < /p>
В настоящее время, чтобы фактически отображать Dartboard, я рисую каждую точку индивидуально, как следующее: < /p>
for (Point pt : allPoints)
{
DartboardSegment segment = getSegmentForPoint(pt);
Color colour = DartboardUtil.getColourForSegment(segment);
int rgb = colour.getRGB();
int x = (int)pt.getX();
int y = (int)pt.getY();
dartboardImage.setRGB(x, y, rgb);
}
< /code>
Очевидно, что это занимает некоторое время. Это не невыносимое количество (~ 2-3, чтобы покрасить область 500x500), но я хотел бы устранить эту «отставание», если смогу. В других областях моего приложения я столкнулся с альтернативными методами (например, graphics.fillrect ()), которые намного быстрее. ) Метод на графическом классе, однако я не думаю, что могу легко преобразовать свои сегменты в многоугольники, потому что их формы различаются (например, форма тройного, круг для Bullseye ...). Есть ли более быстрый способ в Java, чтобы нарисовать произвольный массив точек одновременно, а не зацикливаться и рисовать индивидуально? < /p>
Код, который я хочу < /em>, - это что -то вроде: < /p>
for (DartboardSegment segment : allSegments)
{
Color colour = DartboardUtil.getColourForSegment(segment);
Polgyon poly = segment.toPolygon();
Graphics gfx = dartboardImage.getGraphics();
gfx.setColor(colour);
gfx.fillPolygon(poly);
}
Подробнее здесь: https://stackoverflow.com/questions/376 ... ts-quickly