📄 exbackgroundimage.java
字号:
//
// CLASS
// ExBackgroundImage - illustrate use of background images
//
// LESSON
// Add a Background node to place an background image behind geometry.
//
// SEE ALSO
// ExBackgroundColor
// ExBackgroundGeometry
//
// AUTHOR
// David R. Nadeau / San Diego Supercomputer Center
//
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.net.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.image.*;
public class ExBackgroundImage
extends Example
{
//--------------------------------------------------------------
// SCENE CONTENT
//--------------------------------------------------------------
//
// Nodes (updated via menu)
//
private Background background = null;
//
// Build scene
//
public Group buildScene( )
{
// Get the current image
ImageComponent2D image = imageComponents[currentImage];
// Turn off the example headlight
setHeadlightEnable( false );
// Default to walk navigation
setNavigationType( Walk );
// Build the scene root
Group scene = new Group( );
// BEGIN EXAMPLE TOPIC
// Create application bounds
BoundingSphere worldBounds = new BoundingSphere(
new Point3d( 0.0, 0.0, 0.0 ), // Center
1000.0 ); // Extent
// Set the background color and its application bounds
background = new Background( );
background.setImage( image );
background.setCapability( Background.ALLOW_IMAGE_WRITE );
background.setApplicationBounds( worldBounds );
scene.addChild( background );
// END EXAMPLE TOPIC
// Build foreground geometry
scene.addChild( new TowerScene( this ) );
return scene;
}
//--------------------------------------------------------------
// USER INTERFACE
//--------------------------------------------------------------
//
// Main
//
public static void main( String[] args )
{
ExBackgroundImage ex = new ExBackgroundImage( );
ex.initialize( args );
ex.buildUniverse( );
ex.showFrame( );
}
// Image menu choices
private NameValue[] images = {
new NameValue( "None", null ),
new NameValue( "Stars", "stars2.jpg" ),
new NameValue( "Red Clouds", "oddclouds.jpg" ),
new NameValue( "White Clouds", "clouds.jpg" ),
};
private int currentImage = 0;
private ImageComponent2D[] imageComponents = null;
private CheckboxMenu imageMenu = null;
//
// Initialize the GUI (application and applet)
//
public void initialize( String[] args )
{
// Initialize the window, menubar, etc.
super.initialize( args );
exampleFrame.setTitle( "Java 3D Background Image Example" );
//
// Add a menubar menu to change node parameters
// Image -->
//
Menu m = new Menu( "Background" );
imageMenu = new CheckboxMenu( "Image", images,
currentImage, this );
m.add( imageMenu );
exampleMenuBar.add( m );
// Preload the background images
// Use the texture loading utility to read in the image
// files and process them into an ImageComponent2D
// for use in the Background node.
if ( debug ) System.err.println( " background images..." );
TextureLoader texLoader = null;
String value = null;
imageComponents = new ImageComponent2D[images.length];
for ( int i = 0; i < images.length; i++ )
{
value = (String)images[i].value;
if ( value == null )
{
imageComponents[i] = null;
continue;
}
texLoader = new TextureLoader( value, this );
imageComponents[i] = texLoader.getImage( );
// Component could be null if image couldn't be loaded
}
}
//
// Handle checkboxes and menu choices
//
public void checkboxChanged( CheckboxMenu menu, int check )
{
if ( menu == imageMenu )
{
// Change the background image
currentImage = check;
ImageComponent2D image = imageComponents[check];
background.setImage( image );
return;
}
// Handle all other checkboxes
super.checkboxChanged( menu, check );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -