Graphics g и как им управлять - Java
Формулировка задачи:
Имеется примерно такой код:
Он вполне рабочий. Только вот квадрат из функции movedRect() не отрисовывается. Судя по всему getGraphics() в строке 32 не отрабатывает как нужно. Чем его заменить?
Можно конечно взять этот объект из буфера buffer.createGraphics, но тогда вызвать его можно только из данного класса.
А если мне (ну например) нужно сделать что-то вроде этого:
То мне выдает NullPointer (это понятно, буфер существует не всегда). Так вот, можно ли как-то этот Graphics получить и передать в другое место?
Или в методе rebuildBuffer должна быть вообще вся графика. Нелогично это как-то.
Кому лень читать код: мне нужно чтобы в rebuildBuffer или paintComponent остались только вызовы функций, а конкретные отрисовываемые объекты приходили откуда-то извне. Куда копать?
package gui; public class CanvasMain extends JPanel { BufferedImage buffer; private void rebuildBuffer() { int wigth = getWidth(); int heigth = getHeight(); buffer = new BufferedImage(wigth, heigth, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = buffer.createGraphics(); g2d.setColor(Color.RED); g2d.drawLine(0, 0, 500, 300); myLine(g2d); movedRect(20, 20); } protected void paintComponent(Graphics g) { super.paintComponent(g); setBackground(Color.BLACK); if (buffer == null) { rebuildBuffer(); } g.drawImage(buffer, 0, 0, this); } private void myLine(Graphics g2d) { g2d.setColor(Color.YELLOW); g2d.drawLine(200, 100, 0, 300); } public void movedRect(int x, int y) { Graphics2D g2d = (Graphics2D) getGraphics(); //вот эта строка g2d.fillRect(x, y, 50, 50); } }
package main; public class Main { public static void main(String[] args) { CanvasMain frame = new CanvasMain(); frame.movedRect(50, 50); } }
Решение задачи: «Graphics g и как им управлять»
textual
Листинг программы
hero.draw(g2d);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д