Java by API/java.awt.geom/AffineTransform

Материал из Java эксперт
Перейти к: навигация, поиск

AffineTransform: createTransformedShape(Shape pSrc)

   <source lang="java">

import java.awt.Container; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.font.FontRenderContext; import java.awt.font.GlyphVector; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import javax.swing.JComponent; import javax.swing.JFrame; public class MainClass {

 public static void main(String[] args) {
   JFrame jf = new JFrame("Demo");
   Container cp = jf.getContentPane();
   MyCanvas tl = new MyCanvas();
   cp.add(tl);
   jf.setSize(300, 200);
   jf.setVisible(true);
 }

} class MyCanvas extends JComponent {

 public void paint(Graphics g) {
   Graphics2D g2 = (Graphics2D) g;
   g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
   String s = "www.jexp.ru www.jexp.ru";
   Font font = new Font("Serif", Font.PLAIN, 24);
   FontRenderContext frc = g2.getFontRenderContext();
   g2.translate(40, 80);
   GlyphVector gv = font.createGlyphVector(frc, s);
   int length = gv.getNumGlyphs();
   for (int i = 0; i < length; i++) {
     Point2D p = gv.getGlyphPosition(i);
     double theta = (double) i / (double) (length - 1) * Math.PI / 4;
     AffineTransform at = AffineTransform.getTranslateInstance(p.getX(), p.getY());
     at.rotate(theta);
     Shape glyph = gv.getGlyphOutline(i);
     Shape transformedGlyph = at.createTransformedShape(glyph);
     g2.fill(transformedGlyph);
   }
 }

}

      </source>
   
  
 
  



AffineTransform: getRotateInstance(double theta)

   <source lang="java">

import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import javax.swing.JComponent; import javax.swing.JFrame; public class MainClass{

 public static void main(String[] args) {
   JFrame jf = new JFrame("Demo");
   Container cp = jf.getContentPane();
   MyCanvas tl = new MyCanvas();
   cp.add(tl);
   jf.setSize(300, 200);
   jf.setVisible(true);
 }

} class MyCanvas extends JComponent {

 public void paint(Graphics g) {
   Shape shape = new Rectangle2D.Float(100, 50, 80, 80);
   
   Graphics2D g2 = (Graphics2D) g;
   AffineTransform at = AffineTransform.getRotateInstance(-Math.PI / 6);    
   
   g2.setTransform(at);
   g2.draw(shape);
   
 }

}

      </source>
   
  
 
  



AffineTransform: getRotateInstance(double theta, double x, double y)

   <source lang="java">

import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import javax.swing.JComponent; import javax.swing.JFrame; public class MainClass{

 public static void main(String[] args) {
   JFrame jf = new JFrame("Demo");
   Container cp = jf.getContentPane();
   MyCanvas tl = new MyCanvas();
   cp.add(tl);
   jf.setSize(300, 200);
   jf.setVisible(true);
 }

} class MyCanvas extends JComponent {

 public void paint(Graphics g) {
   Shape shape = new Rectangle2D.Float(100, 50, 80, 80);
   
   Graphics2D g2 = (Graphics2D) g;
   float cm = 72 / 2.54f;
   AffineTransform at = AffineTransform.getRotateInstance(-Math.PI / 6, 3 * cm, 2 * cm);    
   
   g2.setTransform(at);
   g2.draw(shape);
   
 }

}

      </source>
   
  
 
  



AffineTransform: getTranslateInstance(double tx, double ty)

   <source lang="java">

import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import javax.swing.JComponent; import javax.swing.JFrame; public class MainClass{

 public static void main(String[] args) {
   JFrame jf = new JFrame("Demo");
   Container cp = jf.getContentPane();
   MyCanvas tl = new MyCanvas();
   cp.add(tl);
   jf.setSize(300, 200);
   jf.setVisible(true);
 }

} class MyCanvas extends JComponent {

 Shape shape;
 public MyCanvas() {
   shape = create();
 }
 protected Shape create() {
   float cm = 72 / 2.54f;
   return new Rectangle2D.Float(cm, cm, 2 * cm, cm);
 }
 public void paint(Graphics g) {
   Graphics2D g2 = (Graphics2D) g;
   g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
   
   g2.setPaint(Color.black);
   g2.draw(shape);
   
   AffineTransform at = AffineTransform.getTranslateInstance(75, 75);
   g2.transform(at);
   g2.setPaint(Color.red);
   g2.draw(shape);
   
 }

}

      </source>
   
  
 
  



AffineTransform: setToRotation(double theta)

   <source lang="java">

import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import javax.swing.JComponent; import javax.swing.JFrame; public class MainClass{

 public static void main(String[] args) {
   JFrame jf = new JFrame("Demo");
   Container cp = jf.getContentPane();
   MyCanvas tl = new MyCanvas();
   cp.add(tl);
   jf.setSize(300, 200);
   jf.setVisible(true);
 }

} class MyCanvas extends JComponent {

 public void paint(Graphics g) {
   Shape shape = new Rectangle2D.Float(100, 50, 80, 80);
   
   Graphics2D g2 = (Graphics2D) g;
   AffineTransform at = new AffineTransform();
   at.setToRotation(Math.PI / 6);
   at.translate(100, 0); 
   
   g2.setTransform(at);
   g2.draw(shape);
   
 }

}

      </source>
   
  
 
  



AffineTransform: setToTranslation(double tx, double ty)

   <source lang="java">

import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import javax.swing.JComponent; import javax.swing.JFrame; public class MainClass{

 public static void main(String[] args) {
   JFrame jf = new JFrame("Demo");
   Container cp = jf.getContentPane();
   MyCanvas tl = new MyCanvas();
   cp.add(tl);
   jf.setSize(300, 200);
   jf.setVisible(true);
 }

} class MyCanvas extends JComponent {

 Shape shape;
 public MyCanvas() {
   shape = create();
 }
 protected Shape create() {
   float cm = 72 / 2.54f;
   return new Rectangle2D.Float(cm, cm, 2 * cm, cm);
 }
 public void paint(Graphics g) {
   Graphics2D g2 = (Graphics2D) g;
  
   g2.setPaint(Color.black);
   g2.draw(shape);
   
   AffineTransform trans = new AffineTransform();
   trans.setToTranslation(30, 3);
   g2.transform(trans);
   g2.setPaint(Color.red);
   g2.draw(shape);
   
 }

}

      </source>
   
  
 
  



AffineTransform: shear(double shx, double shy)

   <source lang="java">

import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import javax.swing.JComponent; import javax.swing.JFrame; public class MainClass{

 public static void main(String[] args) {
   JFrame jf = new JFrame("Demo");
   Container cp = jf.getContentPane();
   MyCanvas tl = new MyCanvas();
   cp.add(tl);
   jf.setSize(300, 200);
   jf.setVisible(true);
 }

} class MyCanvas extends JComponent {

 public void paint(Graphics g) {
   Shape shape = new Rectangle2D.Float(100, 50, 80, 80);
   
   Graphics2D g2 = (Graphics2D) g;
   AffineTransform at = new AffineTransform();
   at.shear(-.5, 0);
   
   g2.setTransform(at);
   g2.draw(shape);
   
 }

}

      </source>
   
  
 
  



AffineTransform: translate(double tx, double ty)

   <source lang="java">

import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import javax.swing.JComponent; import javax.swing.JFrame; public class MainClass{

 public static void main(String[] args) {
   JFrame jf = new JFrame("Demo");
   Container cp = jf.getContentPane();
   MyCanvas tl = new MyCanvas();
   cp.add(tl);
   jf.setSize(300, 200);
   jf.setVisible(true);
 }

} class MyCanvas extends JComponent {

 public void paint(Graphics g) {
   Shape shape = new Rectangle2D.Float(100, 50, 80, 80);
   
   Graphics2D g2 = (Graphics2D) g;
   AffineTransform at = new AffineTransform();
   at.setToRotation(Math.PI / 6);
   at.translate(100, 0); 
   
   g2.setTransform(at);
   g2.draw(shape);
   
 }

}

      </source>