⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transforms.java

📁 非常典型的164个很好的java代码
💻 JAVA
字号:
/* * Copyright (c) 2000 David Flanagan.  All rights reserved. * This code is from the book Java Examples in a Nutshell, 2nd Edition. * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied. * You may study, use, and modify it for any non-commercial purpose. * You may distribute it non-commercially as long as you retain this notice. * For a commercial use license, or to purchase the book (recommended), * visit http://www.davidflanagan.com/javaexamples2. */package com.davidflanagan.examples.graphics;import java.awt.*;import java.awt.geom.*;/** A demonstration of Java2D transformations */public class Transforms implements GraphicsExample {    public String getName() { return "Transforms"; } // From GraphicsExample    public int getWidth() { return 750; }            // From GraphicsExample    public int getHeight() { return 250; }           // From GraphicsExample    Shape shape;                   // The shape to draw    AffineTransform[] transforms;  // The ways to transform it    String[] transformLabels;      // Labels for each transform    /**      * This constructor sets up the Shape and AffineTransform objects we need     **/    public Transforms() {	GeneralPath path = new GeneralPath();  	// Create a shape to draw	path.append(new Line2D.Float(0.0f, 0.0f, 0.0f, 100.0f), false);	path.append(new Line2D.Float(-10.0f, 50.0f, 10.0f, 50.0f), false);	path.append(new Polygon(new int[] { -5, 0, 5 },				new int[] { 5, 0, 5 }, 3), false);	this.shape = path;  // Remember this shape	// Set up some transforms to alter the shape	this.transforms = new AffineTransform[6];	// 1) the identity transform	transforms[0] = new AffineTransform();  	// 2) A scale tranform: 3/4 size	transforms[1] = AffineTransform.getScaleInstance(0.75, 0.75);	// 3) A shearing transform	transforms[2] = AffineTransform.getShearInstance(-0.4, 0.0);	// 4) A 30 degree clockwise rotation about the origin of the shape	transforms[3] = AffineTransform.getRotateInstance(Math.PI*2/12);	// 5) A 180 degree rotation about the midpoint of the shape	transforms[4] = AffineTransform.getRotateInstance(Math.PI, 0.0, 50.0);	// 6) A combination transform	transforms[5] = AffineTransform.getScaleInstance(0.5, 1.5);	transforms[5].shear(0.0, 0.4);	transforms[5].rotate(Math.PI/2, 0.0, 50.0);  // 90 degrees	// Define names for the transforms	transformLabels = new String[] {	    "identity", "scale", "shear", "rotate", "rotate", "combo"	};    }    /** Draw the defined shape and label, using each transform */    public void draw(Graphics2D g, Component c) {	// Define basic drawing attributes	g.setColor(Color.black);                                   // black	g.setStroke(new BasicStroke(2.0f, BasicStroke.CAP_SQUARE,  // 2-pixel				    BasicStroke.JOIN_BEVEL));	g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,        // antialias			   RenderingHints.VALUE_ANTIALIAS_ON);	// Now draw the shape once using each of the transforms we've defined	for(int i = 0; i < transforms.length; i++) {	    AffineTransform save = g.getTransform();    // save current state	    g.translate(i*125 + 50, 50);                // move origin	    g.transform(transforms[i]);                 // apply transform	    g.draw(shape);                              // draw shape	    g.drawString(transformLabels[i], -25, 125); // draw label	    g.drawRect(-40, -10, 80, 150);              // draw box	    g.setTransform(save);                       // restore transform	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -