2013-12-04 4 views
0

Эти точки являются кубическими кривыми, используемыми библиотеками java Graphics2D для рисования высококачественных фигур, таких как svg путь, взятый из Inkscape Пожалуйста, помогите мне, как поместить эти точки в массив, чтобы прочитать их все сразу, вместо замены каждого кривое индивидуален код:Массив или коллекция

import java.awt.*; 
import java.awt.event.*; 
import java.awt.geom.*; 
import java.util.*; 
import javax.swing.*; 

public class Dal extends Frame { 

    public static void main(String[] a){ 
     (new Dal()).setVisible(true); 
     GeneralPath g=new GeneralPath(); 
    } 

    Dal(){ 
     super("Test"); 
     setSize(500, 500); 
     addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent e) { 
       System.exit(0); 
      } 
     }); 
    } 

    @SuppressWarnings("unused") 
    public void paint(Graphics g) { 
     Graphics2D g2d = (Graphics2D) g; 
     g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); 
     g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); 
     g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 

     GeneralPath path=new GeneralPath(); 
     path.moveTo(457.61616,470.82943);    
      /* */ 
     path.curveTo(458.41016,425.70843 ,427.74316,392.55343 ,403.93516,370.91243); 
     path.curveTo(399.48516,366.83843 ,398.54916,368.02743 ,397.41516,372.27043); 
     path.curveTo(394.75116,382.25643 ,392.96616,392.69543 ,391.09516,402.03043); 
     path.curveTo(390.35916,405.62343 ,389.79116,406.92443 ,392.62616,409.52743); 
     path.curveTo(406.00316,421.83343 ,442.19716,458.07143 ,444.89016,482.76843); 
     path.curveTo(431.76716,528.31343 ,393.39116,574.56743 ,350.22516,594.56743); 
     path.curveTo(316.63916,610.12643 ,278.88716,614.34043 ,242.18316,610.35243); 
     path.curveTo(232.12112,609.27843 ,228.38012,619.29143 ,238.47016,621.92243); 
     path.curveTo(274.01216,631.28543 ,320.32416,637.73643 ,356.57416,628.91043); 
     path.curveTo(420.03416,613.46343 ,456.48216,533.71643 ,457.61616,470.82943); 

     path.closePath(); 
     g2d.draw(path); 
     g2d.fill(path); 
    }  
} 
+4

Что именно вы хотите достичь? Использование массива не устранит необходимость жесткого кодирования всех этих точек в коде. –

+0

Позволяет ли 'path' разрешать массивы? Вы можете сохранить эти значения в 2D-массив, такой как «Double [] [] newArray = new Double [rows] [3];' – theGreenCabbage

+0

Да, я хочу удалить жесткий код, прочитав каждую точку, я подумал о массиве, чтобы удалить сложность в моем коде, но я не уверен, потому что 'path.curveTo()' Добавляет изогнутый сегмент, определенный тремя новыми точками, к пути путем рисования кривой Безье, которая пересекает как текущие координаты, так и заданные координаты (x3, y3), используя указанные точки (x1, y1) и (x2, y2) в качестве контрольных точек Безье. Все координаты указаны с двойной точностью. Переопределения: curveTo (...) в Path2D – a14

ответ

0

Я получил это предложение, Создать класс Безье (унаследованный от абстрактной формы), который содержит все три координаты. Затем вы можете собрать коллекцию объектов Безье и создать свою графику с этого , можете ли вы объяснить мне, как реализовать это через Java программно в соответствии с вышеуказанной программой? Спасибо

Смежные вопросы