Java - как рисовать графику - PullRequest
       2

Java - как рисовать графику

2 голосов
/ 01 сентября 2011

Я попытался осмотреться, но не могу понять, как рисовать графику в Java. Позвольте мне привести пример.

Допустим, я хочу создать собственный метод для заполнения треугольника, и он принимает три точки в качестве параметров. Как я могу использовать метод fillPolygon (int [] xPoints, int [] yPoints, int nPoints), если я не могу создать объект Graphics?

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Первое, что вы должны понять (возможно, вы уже это знаете), это то, что Graphics - это то, где вы пишете в , а не то, откуда вы пишете. В большинстве случаев это экран вашего компьютера, например, когда вы используете Swing.

Вы также можете рисовать непосредственно на пустое изображение, написав в Graphics, полученном из BufferedImage.getGraphics :

Image myImage = new BufferedImage(...);
Graphics graphImage = myImage.getGraphics();
graphImage.setColor(Color.BLUE);
graphImage.fillPolygon(...);  // set some blue pixels inside the BufferedImage

Затем вы можете преобразовать это изображение в любой формат изображения.

Глупый пример, который вам не следует делать (см. Ниже истинную процедуру Swing): Вы можете нарисовать свое изображение в компоненте Swing

public class MyJPanel extends Panel {

   @Override
   public void paintComponent(Graphics g) { // g is your screen
       ... 
       g.drawImage(myImage,...);  // draw your image to the screen
       ...
   }
}

Стандартная процедура Swing - запись прямо на экран:

public class MyJPanel extends Panel {

   @Override
   public void paintComponent(Graphics g) { // g is your screen
       ... 
       g.fillPolygon(...); // directly writes your pixels to the screen buffer
       ...
   }
}

(Комментарий для придирки: не совсем верно, что вы пишете напрямую в экранный буфер, поскольку Swing имеет двойную буферизацию.)

2 голосов
/ 01 сентября 2011

Вам нужна поверхность для рисования.Обычно это можно сделать, создав собственный компонент (например, расширение JPanel в разгаре) и затем переопределив там различные методы обновления чертежа.Основным релевантным для реализации является paintComponent , который получает объект Graphics, передаваемый в качестве параметра.

Обычно вы также можете привести свой объект Graphics к Graphics2D ,что дает вам гораздо более богатый набор примитивов для рисования.

...