2013-05-24 3 views
1

Я написал игру, и теперь мне хотелось бы научиться манипулировать камерой.Рисование отдельных частей Graphics2D

Мой рисунок состоит из этого:

private void render() 
{ 
    // CREATE THE GRAPHICS 
    Graphics2D g = (Graphics2D) bufferStrategy.getDrawGraphics(); 
    // MAKE THE PICTURE WHERE WE WILL PAINT EVERYTHING AT ONCE 
    g.clearRect(0, 0, WIDTH, HEIGHT); 
    // PAINT ANYTHING WE NEED HERE 
    render(g); 
    g.dispose(); 
    // SHOW THE WHOLE IMAGE RATHER THAN PAININT ONE OBJECT AT A TIME 
    bufferStrategy.show(); 
} 

Мой BufferStrategy создается следующим образом:

canvas = new Canvas(); 
    // once again I add 1 because java is stupid that's why 
    canvas.setBounds(0, 0, WIDTH+1, HEIGHT+1); 
    //canvas.setBounds(bounds); 
    canvas.setIgnoreRepaint(true); 

    // SET GRAPHICS DEVICE 
    canvas.createBufferStrategy(2); 
    bufferStrategy = canvas.getBufferStrategy(); 

В функции визуализации я рисую свой игровой мир со всеми платформами, где они должны быть. Теперь, если игровой мир больше размера окна, и я хотел бы сосредоточиться на персонаже и нарисовать часть мира, где есть персонаж, как бы я это сделал? Итак, скажем, мое окно составляет 300 х 300, а мой игровой мир - 900 х 900, а мой персонаж находится посередине, так что я хотел бы отобразить часть графики, где х 150 и 150, а ширина и высота 300 х 300.

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

Благодарим за любую помощь заранее. Я пробовал все, что я знаю, безрезультатно.

ответ

2

Так как же я могу взять этот Graphics2D и переместить его на указанные значения?

Почему вы должны переместить Graphics2D? Почему бы не создать изображение, выходящее за пределы области просмотра, и просто сместить окно просмотра. Затем, если пользователь приблизится к краю окна просмотра, добавьте изображение в передний край и вырежьте часть на задней кромке.

+0

Как создать изображение из Graphics2D? Можете ли вы предоставить примерный код? – Quillion

+1

@Quillion: вы можете использовать метод drawImage (...) 'Graphics2D, или если вы хотите сделать рисунок, используйте многие другие методы Graphics2D и Graphics. Ознакомьтесь с API для получения подробной информации об этом. –

+1

Спасибо :) Я получил его – Quillion

1

Для этого необходимы аффинные преобразования.

http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/geom/AffineTransform.html

Сдвиг персонаж в центре экрана путем применения сдвига.

В компоненте краски сохраните текущую трансформацию. Создайте новое преобразование, которое затем переместит экран туда, где вы хотите. Установите Graphics2D, чтобы использовать новое преобразование. Нарисуйте символ в исходных координатах Установите Graphics2D для использования исходного преобразования.

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