2015-07-01 3 views
0

Так что я учусь создать java-игру на затмении. Я научился добавлять формы и т. Д. Я также научился рисовать фигуры (менять цвета), мне было интересно, как добавить изображение в форму. Это код для рисования прямоугольника.Добавление изображения в форму

public void paintColumn(Graphics g, Rectangle column) 
    { 
     g.setColor(Color.blue.darker()); 
     g.fillRect(column.x, column.y, column.width, column.height); 
    } 
+0

'g.drawImage'? Что вы подразумеваете под «добавлением к форме»? Вы хотите обрезать изображение так, чтобы он был такой же, как форма? Или просто нарисуйте изображение в форме? – MadProgrammer

+0

Я хочу, чтобы изображение было внутри формы, но форма имела тот же хит-пойнт. – Harrison

+0

Вы хотите нарисовать то же самое вокруг изображения? – MadProgrammer

ответ

0

Просто создайте BufferedImage объект:

BufferedImage image = ImageIO.read(filename); 

Тогда вместо того, чтобы делать g.drawShape сделать:

g.drawImage(image, [starting x], [starting y], [image width], [image height], [image observer]); 

В вашем случае, вы, вероятно, будет не нужен наблюдатель изображения, поэтому вы можете просто положить null в это место.

Тогда то, что было бы проще всего, - это просто нарисовать прямоугольник над изображением. Несмотря на то, что изображение фактически не будет «внутри» прямоугольника, многоуровневый эффект заставит его выглядеть так, как если бы он был. Вы можете использовать drawRect вместо fillRect, так что вы просто получите границу вокруг своего изображения.

Чтобы гарантировать, что ваш прямоугольник окажется поверх изображения, и не покрывается, так как изображение имеет тот же размер, не забудьте установить линию drawRect после drawImage.

g.drawRect([starting x], [starting y], [width], [height]); 

Проверьте эти Graphics Java Docs для получения дополнительной информации о чертежных изображениях.

1

Подробнее о том, как загрузить изображение, также можно найти на странице 2D Graphics. Подробнее о 2D Graphics API.

В принципе, вы загружаете изображение, рисуете его и затем рисуете вокруг него.

Rectangle

Graphics2D g2d = (Graphics2D) g.create(); 
    int x = (getWidth() - img.getWidth())/2; 
    int y = (getHeight() - img.getHeight())/2; 
    g2d.drawImage(img, x, y, this); 
    g2d.setColor(Color.RED); 
    g2d.drawRect(x, y, img.getWidth(), img.getHeight()); 
    g2d.dispose(); 

Теперь это просто рисует прямоугольник над изображением, если вы хотите, то «кадр» изображение вместо этого, вы могли бы заполнить прямоугольник, делая его больше, то изображение, но вы должны заполнить, а затем нарисовать изображение

FilledRectangle

Graphics2D g2d = (Graphics2D) g.create(); 
    int x = (getWidth() - img.getWidth())/2; 
    int y = (getHeight() - img.getHeight())/2; 
    g2d.setColor(Color.RED); 
    g2d.fillRect(x - 10, y - 10, img.getWidth() + 20, img.getHeight() + 20); 
    g2d.drawImage(img, x, y, this); 
    g2d.dispose(); 
Смежные вопросы