public VolatileImage renderBackgroundLayer(int LayerNumber) { // create hardware accellerated background layer (Volatile Image) backgroundLayer[LayerNumber] = this.getGraphicsConfiguration() .createCompatibleVolatileImage( loadedLevel.getWidth() * 16, loadedLevel.getHeight() * 16, Transparency.TRANSLUCENT); Graphics2D g2d = backgroundLayer[LayerNumber].createGraphics(); g2d.setComposite(AlphaComposite.Src); // Clear the image. g2d.setColor(new Color(0, 0, 0, 0)); g2d.fillRect( 0, 0, backgroundLayer[LayerNumber].getWidth(), backgroundLayer[LayerNumber].getHeight()); g2d.setBackground(new Color(0, 0, 0, 0)); g2d.setColor(new Color(1f, 1f, 1f, 1f)); for (int i = 0; i < backgroundLayer[LayerNumber].getWidth(this) / backgroundImage[LayerNumber].getWidth(this); i++) { g2d.drawImage( backgroundImage[LayerNumber], i * backgroundImage[LayerNumber].getWidth(this), 0, this); } return backgroundLayer[LayerNumber]; }
// Draw elements: @Override public void paint(Graphics g) { // Set up Graphics Enigne: Graphics2D g2d = (Graphics2D) g; // Antialiasing: if (antialiasing == true) { RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2d.setRenderingHints(rh); } // Draw rendered image g2d.drawImage( renderImage, 0, 0, width, height, 0, 0, resolution.width, resolution.height, this); g2d.setColor(Color.yellow); g2d.drawString("FPS: " + fps, 20, 20); }
public VolatileImage render() { Graphics2D g2d = renderImage.createGraphics(); try { // Draw background layer: for (int i = 0; i < backgroundLayer.length; i++) { g2d.drawImage( backgroundLayer[i], -(int) (camera.position.x * Math.pow(0.5, backgroundLayer.length - i)), -(int) (camera.position.y * Math.pow(0.5, backgroundLayer.length - i)) + backgroundLayer[i].getHeight(this) - backgroundLayer[i].getHeight(this) / (i + 1), this); } } catch (Exception e) { } // Draw Tiles: (new) try { g2d.drawImage( tileLayer, camera.center.x - camera.position.x, camera.center.y - camera.position.y, this); } catch (Exception e) { } // Draw all kinds of Sprites: try { int a = 0; while (sprite[a] != null) { // Play Animation for sprite: if (sprite[a].animation.plays == true) { sprite[a].getAnimation().nextFrame(); } // -- Draw sprite: g2d.drawImage( sprite[a].img, /*X1*/ sprite[a].posx + ((sprite[a].flipH - 1) / (-2)) * sprite[a].size.width /*camera*/ - camera.position.x + camera.center.x, /*Y1*/ sprite[a].posy + ((sprite[a].flipV - 1) / (-2)) * sprite[a].size.height /*camera*/ - camera.position.y + camera.center.y, /*X2*/ sprite[a].posx + sprite[a].size.width * sprite[a].flipH + ((sprite[a].flipH - 1) / (-2)) * sprite[a].size.width /*camera*/ - camera.position.x + camera.center.x, /*Y2*/ sprite[a].posy + sprite[a].size.height * sprite[a].flipV + ((sprite[a].flipV - 1) / (-2)) * sprite[a].size.height /*camera*/ - camera.position.y + camera.center.y, // destination sprite[a].getAnimation().col * sprite[a].size.width, sprite[a].getAnimation().row * sprite[a].size.height, // source (sprite[a].getAnimation().col + 1) * sprite[a].size.width, (sprite[a].getAnimation().row + 1) * sprite[a].size.height, this); a++; } } catch (Exception e) { g2d.drawString("Error drawing a Sprite", 20, 20); } // Draw "GUI": g2d.drawImage(coinSpriteSheet, 16, 16, 32, 32, 0, 0, 16, 16, this); g2d.setColor(Color.BLACK); g2d.drawString("x " + collectedCoins, 32, 30); g2d.setColor(Color.WHITE); g2d.drawString("x " + collectedCoins, 32, 29); if (showSpritePos == true) { for (int i = 0; i < numberOfSprites; i++) { g2d.setColor(Color.red); g2d.drawRect( /*X1*/ sprite[i].posx /*camera*/ - camera.position.x + camera.center.x, /*Y1*/ sprite[i].posy /*camera*/ - camera.position.y + camera.center.y, 1, 1); g2d.setColor(Color.black); } } if (showSpriteNum == true) { for (int i = 0; i < numberOfSprites; i++) { g2d.setColor(Color.black); g2d.drawString( "" + i, /*X1*/ sprite[i].posx /*camera*/ - camera.position.x + camera.center.x, /*Y1*/ sprite[i].posy /*camera*/ - camera.position.y + camera.center.y); g2d.setColor(Color.white); g2d.drawString( "" + i, /*X1*/ sprite[i].posx /*camera*/ - camera.position.x + camera.center.x, /*Y1*/ sprite[i].posy /*camera*/ - camera.position.y + camera.center.y - 1); } } if (showSpritePos == true) { for (int i = 0; i < numberOfTiles; i++) { g2d.setColor(Color.red); g2d.drawRect( /*X1*/ tile[i].posx + ((tile[i].flipH - 1) / (-2)) * tile[i].size.width /*camera*/ - camera.position.x + camera.center.x, /*Y1*/ tile[i].posy + ((tile[i].flipV - 1) / (-2)) * tile[i].size.height /*camera*/ - camera.position.y + camera.center.y, 1, 1); g2d.setColor(Color.black); } } if (showCamera == true) { g2d.setColor(Color.red); g2d.drawLine( 0, camera.prefHeight - camera.position.y + camera.center.y, loadedLevel.getWidth() * 16, camera.prefHeight - camera.position.y + camera.center.y); g2d.setColor(new Color(1, 0, 0, 0.33f)); g2d.fillRect( 0, camera.prefHeight - camera.position.y + camera.tolerance, loadedLevel.getWidth() * 16, camera.tolerance); g2d.setColor(new Color(0, 1, 0, 0.33f)); g2d.fillRect( camera.center.x - camera.position.x + camera.center.x, camera.center.y - camera.position.y + camera.center.y, camera.bounds.width - 2 * camera.center.x, camera.bounds.height); g2d.setColor(Color.green); g2d.drawLine( camera.center.x - camera.position.x + camera.center.x, 0, camera.center.x - camera.position.x + camera.center.x, 999); g2d.drawLine( camera.bounds.width - camera.center.x - camera.position.x + camera.center.x, 0, camera.bounds.width - camera.center.x - camera.position.x + camera.center.x, 999); } return renderImage; }